Tez*_*can 8 javascript three.js
使用下面的代码,返回网格的位置,(0, 0, 0)但不是.那么渲染过程后计算的positioın向量是什么?
me.scene.add(objMesh); //me is a project class
objMesh.updateMatrixWorld(true);
alert(objMesh.position.x + ',' + objMesh.position.y + ',' + objMesh.position.z);
Run Code Online (Sandbox Code Playgroud)
objMesh是从objfile创建的,它被正确地添加到场景中并且质心是大约(-8,3,0)但是objMesh的位置向量是(0,0,0)我们是否必须先自动计算某些东西或者我应该计算它是从网格的几何顶点手动?
http://81.214.75.32:8181/admin 是网址
该网站是土耳其语所以我将翻译UI项目
在网站上有"Dosya"菜单项选择菜单项并选择"ProjeAç"对话框中出现一个对话框选择MUTFAK_1场景将出现在该场景中,每个网格位置为(0,0,0)即可: )
mrd*_*oob 23
object.position始终是对象的本地.如果你想获得世界空间的位置,你需要得到它object.matrixWorld.
试试这个:
scene.add(objMesh);
scene.updateMatrixWorld(true);
var position = new THREE.Vector3();
position.getPositionFromMatrix( objMesh.matrixWorld );
alert(position.x + ',' + position.y + ',' + position.z);
Run Code Online (Sandbox Code Playgroud)
R58
该功能getPositionFromMatrix()已重命名为setFromMatrixPosition().
mrd*_*oob 12
要查找世界空间中几何体质心的位置,请尝试以下方法:
objMesh.geometry.computeBoundingBox();
var boundingBox = objMesh.geometry.boundingBox;
var position = new THREE.Vector3();
position.subVectors( boundingBox.max, boundingBox.min );
position.multiplyScalar( 0.5 );
position.add( boundingBox.min );
position.applyMatrix4( objMesh.matrixWorld );
alert(position.x + ',' + position.y + ',' + position.z);
Run Code Online (Sandbox Code Playgroud)
R58
是的。在与 mrdoob 交谈之后,我意识到对象的位置对于它们自己来说是本地的。我的情况是考虑顶点找到网格的中心点。下面是获取质心的代码,该代码来自答案#447(https://github.com/mrdoob/ Three.js/issues/447 )
geom.centroid = new THREE.Vector3();
for (var i = 0, l = geom.vertices.length; i < l; i++) {
geom.centroid.add(geom.vertices[i]);
}
geom.centroid.divideScalar(geom.vertices.length);
Run Code Online (Sandbox Code Playgroud)
现在我们有了几何质心......
根据https://github.com/mrdoob/third.js/wiki/Migration更新,.addSelf已重命名为.addr55 之后
| 归档时间: |
|
| 查看次数: |
25658 次 |
| 最近记录: |