gpt4 book ai didi

javascript - Three.js Raycaster 未检测到场景网格

转载 作者:行者123 更新时间:2023-11-30 08:42:54 25 4
gpt4 key购买 nike

我在 Chrome 版本 35.0.1916.153 m 中使用 three.js r67

我正在尝试与我在场景中创建的一些自定义网格相交。光线转换器似乎没有注册网格,尽管它们存在于 scene.children 中。

网格创建代码:

if (modelVertices != null && modelVertices.length >= 3) {
triangles = THREE.Shape.Utils.triangulateShape ( modelVertices, holes );

for( var i = 0; i < triangles.length; i++ ){

modelGeometry.faces.push( new THREE.Face3( triangles[i][0], triangles[i][2], triangles[i][2] ));

}

modelGeometry.computeFaceNormals();
var modelMesh = new THREE.Mesh(modelGeometry, material);
modelMesh.material.side = THREE.DoubleSide;
polyhedralzGroup.add(modelMesh)
}

光线转换代码:

                var projector = new THREE.Projector();
projector.unprojectVector( vector, camera );

var raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
//console.log("Work");
// See if the ray from the camera into the world hits one of our meshes

var intersects = raycaster.intersectObjects( scene.children, true );
helper.position.set( 0, 0, 0 );
//console.log(intersects.length);
if ( intersects.length > 0 ) {
if (intersects[ 0 ].face != null) {
helper.lookAt( intersects[ 0 ].face.normal );
helper.position.copy( intersects[ 0 ].point );
}

在代码中,我正在使用 computeFaceNormals();所以这不是问题(请参阅 here )。奇怪的是场景似乎与我使用简单三 Angular 形构建的其他几何体相交(即不使用 THREE.Shape.Utils.triangulateShape ;只是手动插入三 Angular 形顶点和面)非常好,这意味着这不能不考虑相交的 Canvas 偏移是一个问题。我检查了这两种几何形状,两者之间似乎没有任何根本区别。

Example of object not being intersected

有人知道问题出在哪里吗?

最佳答案

这个问题与顶点的构造方式有关:使用字符串。尽管 three.js 允许您构建顶点(以及几何体和网格)并依次使用字符串显示几何体,但它不允许您使用这些顶点进行光线转换。更简洁地说,这个问题可以简化为:

改变这个:

aVertex = new THREE.Vector3( part[0], part[1] , part[2] );

为此:

aVertex = new THREE.Vector3( parseFloat(part[0]), parseFloat(part[1]) , parseFloat(part[2]) );

我不太确定这是错误还是功能,因为使用字符串格式的顶点时似乎不会抛出任何错误,尽管您不能对具有字符串顶点几何形状的对象进行光线转换(可能是因为法线无法计算?)。

关于javascript - Three.js Raycaster 未检测到场景网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com