Visual LabINTERACTIVE LEARNING
OpenGL 与 3D第 3 / 5 章

控制器、Raycaster 与 BatchedMesh

排查控制器交互问题,并理解射线拾取和批处理网格。

Three.jsUV相机
专题预计 46 分钟查看源文 ↗

变换控制器无法拖动的原因

  • 模型尺寸过大,导致拖动的距离不明显,肉眼看不出变化,常见隐秘的bug

Raycaster

raycaster射线与mesh交点的法线是通过插值得来,是mesh本地空间法线,如果要判断方向,需要转换到世界空间,或者把世界空间的方向转换到mesh的本地空间

batchedMesh

batchedMesh是如何实现使用同一个material,但是每个物体单独应用一个矩阵的

  1. 使用一个dataTexture存储矩阵数据

  1. 在WebGLRenderer中把纹理设置到uniform中

  1. 在顶点着色器中去获取纹理,并定义一个解析矩阵的函数

  1. 在顶点着色器中去使用 (threejs r165)

r166 已修改为内置的变量 gl_DrawID

两个对比的ppt

https://on-demand.gputechconf.com/gtc/2013/presentations/S3032-Advanced-Scenegraph-Rendering-Pipeline.pdf
https://on-demand.gputechconf.com/siggraph/2014/presentation/SG4117-OpenGL-Scene-Rendering-Techniques.pdf