1. 首页
  2. three.js

three.js关于移动/定位对象的查询

嗨,我在探索Three.js我在理解上面临一些非常基本的问题。n我的实验three.js代码为as==0;n创建代码时,它位于全局坐标系中的(0,0,0),作为三的默认行为。n及其顶点的顺序为2.5,带有适当的符号(5的一半)。n然后我将立方体定位在(10,5,0)。n调试显示,在将立方体移动到(10,5,0)后:顶点:数组(8)n0:Vector3{x:2.5,y:2.5}n1:Vector3{x:2.5,y:2.5,z:-2.5}n,z:2.5}n3:Vector3{x:2.5,y:-2.5,z:-2.5}n4:Vector3{x:-2.5,y:2.5,z:-2.5}n5:Vector3{x:-2.5,y:2.5,z:2.5}n6:Vector3{x:-2.5,y:-2.5,z:-2.5}n7:Vector3{x:-2.5,y:-2.5,z:-2.5,z:10},z:0}n设置位置之前的顶点具有完全相同的值。n另一方面,如果我这样做:n几何翻译(10,5,0);n在这种情况下,顶点会按预期发生变化,而立方体位置不会发生变化:n0:Vector3{x:12.5,y:7.5,z:2.5}n1:Vector3{x:12.5,y:7.5,2.5,z:2.5}n3.3.3.3.3.3.3.3.3.3.3.3.3.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.2.5.5.2.5.5.2.5.5.5.2.5.5.2.5.5.7.5.3.5.3.3.3.3.3.5.5.5.5.5.5.3.5.5.5.5.5.5.5.5.5.5.5.3.5.5.5.5.5.5.5.5.5.5.5.3.5.5.5.5.3.5.5.5.5.3.5.5.3.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5…位置:向量3{x:0,y:0,z:0}n我无法理解这种行为差异。n如果多维数据集的位置设置为新值,则其顶点也必须更改,但事实并非如此。如果我移动几何体本身,立方体的位置就不会改变。n那么我在这里遗漏了什么?mghildiy:n如果立方体的位置设置为新值,则其顶点也必须更改,事实并非如此。n如果通过position、rotation或scale更改对象的变换,则可以有效地更改对象的变换矩阵。而不是几何体本身。顶点由顶点着色器更新,因为在GPU上执行此操作更有效。计算是并行执行的,而不是单个线程。您可以在此处阅读有关此主题的更多信息:nhttps://en.wikibooks.org/wiki/GLSL_编程/Vertex_转换5n更改几何图形(例如通过BufferGeometry.translate())是理想情况下只需执行一次而不是每帧的操作。如果您确实需要在JavaScript中转换顶点,则必须通过将Object3D.matrixWorld与每个顶点相乘来执行建模转换。n本指南可能也会有所帮助:nhttps://threejs.org/docs/#manual/en/introduction/Matrix-转变20n A query on moving/positioning an objectn

three.js关于移动/定位对象的查询 为WP2原创文章,链接:https://www.wp2.cn/three-js/three-js%e5%85%b3%e4%ba%8e%e7%a7%bb%e5%8a%a8-%e5%ae%9a%e4%bd%8d%e5%af%b9%e8%b1%a1%e7%9a%84%e6%9f%a5%e8%af%a2/