Skip to content

ShiboXing/Ball_Screw_Linear_Slide_3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1. 实现原理

使用unity 3D引擎开发对于滑轨套装的组装程序。输入为滑轨套装的fbx元件,输出为一个3D城乡的滑轨教学组装程序。程序以空面板开始,完成状态为组装好的滑轨套件。
程序实现采用第一人称控制的设计思想,完成用户对套装组件的交互操作。核心功能依赖于Unity引擎的光学渲染,如光投,光追等。

2. 开发流程

2.1 设计程序

程序的控制机制采用第一人称可移动相机视角,以便于对3d物体的全方位视图。由于套件为3D物体,2D视图或者固定3D视图无法满足所有的交互任务。
确定物体的参数,渲染材质和其他物理参数。保证渲染空间的物体大小连贯性。

2.2 开发物体菜单栏

导入所有的fbx原件,程序化在渲染空间创建对应的3d对象。由于物体为3D,设计菜单栏为物体的动态旋转视图。在渲染空间自动化创建物体的固定相机进行独立材质渲染,
并把渲染结果映射在界面的画布。一个可选的优化方法是把菜单栏的元件在程序加载时完成渲染并在缓存中生成压缩视频文件,程序运行时直接播放免除实时渲染的运行算力。


2.4 开发元件的拖拽机制

用户的和程序的主要交互方式为拖拽到附属物体上并被接受或驳回。拖拽元件主要通过Unity引擎的事件监听功能实现。用户在点击菜单图案的时刻,3D元件将被创建到物理
世界。与此同时拖拽事件开启,物体的全局位置跟随鼠标坐标,直至拖拽事件结束。结束时物体被销毁或粘合固定。s's's's's's

2.5 开发元件粘合机制

物体之间的粘合原理采用Unity引擎的光投(ray casting)。当原件被用户拖拽时,程序对鼠标坐标
进行实时的光投,以判断被拖拽的元件被粘合到的位置。所有的元件的粘合的范围规定存储在一个元件树结构里,里面规定了子元件贴合的(x, y, z)坐标,和对于被粘合
元件的长宽高百分数 (x_perc, y_perc, z_perc),从而判断被拖拽元件是否被争取的粘合。

2.6 开发schieber滑轨的微调机制

在拖拽的功能基础上增加滑轨的微调交互。在拖拽事件进行中,程序会检测是否为滑轨元件,并可能切换到二级拖拽事件。切换时相自动按照最短路径把用户视角切换到
滑轨旁边的固定坐标,渲染用户y轴拖拽。二级拖拽事件结束时,相机执行复位动作,并让上级拖拽事件接管。

2.7 开发其他用户界面功能

在渲染和UI层面制作其他的用户友好型交互。如菜单栏的速率,粘合元件的表面材质渲染,滑轨微调的油卡尺标渲染,螺丝粘合大小的UI提示等。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published