OpenGL 与 3D第 3 / 5 章
控制器、Raycaster 与 BatchedMesh
排查控制器交互问题,并理解射线拾取和批处理网格。
变换控制器无法拖动的原因
- 模型尺寸过大,导致拖动的距离不明显,肉眼看不出变化,常见隐秘的bug
Raycaster
raycaster射线与mesh交点的法线是通过插值得来,是mesh本地空间法线,如果要判断方向,需要转换到世界空间,或者把世界空间的方向转换到mesh的本地空间
batchedMesh
batchedMesh是如何实现使用同一个material,但是每个物体单独应用一个矩阵的?
- 使用一个dataTexture存储矩阵数据

- 在WebGLRenderer中把纹理设置到uniform中

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

- 在顶点着色器中去使用 (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