可点击的网格与THREE.lod

时间:2014-03-04 15:34:43

标签: three.js

我现在正致力于为业余视频游戏制作3D引擎,我希望为他增添大量功能以获得最佳性能。游戏。但是我在使用lod网格获得“点击事件”时遇到了严重的问题。

对于“lod”部分,现在没问题,他已经整合了,但我找不到解决方案来应用这个例子:

https://stackoverflow.com/a/12808987/3379444

我必须单独按下“lod”对象或每个网格吗?

我的代码的一部分:

var i, j, mesh, lod;
for ( j = 0; j <= 42; j++) {

lod = new THREE.LOD();

    //Here, it's just var for place my mesh into a circle
rayonSysteme = Math.floor(Math.random() * 10000) + 2500;
angleSysteme = Math.random() * 360; 

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

    mesh = new THREE.Mesh( geometry[ i ][ 0 ], material );
    mesh.scale.set( 1.5, 1.5, 1.5 );
    mesh.updateMatrix();
    mesh.matrixAutoUpdate = false;
            //Callback here ? 
    mesh.callback = function() { console.log( this.name ); }
    lod.addLevel( mesh, geometry[ i ][ 1 ] );

}

lod.position.x = rayonSysteme * Math.cos(angleSysteme);
lod.position.y = Math.floor(Math.random() * 1000)-500;
lod.position.z = rayonSysteme * Math.sin(angleSysteme);
    //Or here ? 
lod.updateMatrix();
lod.matrixAutoUpdate = false;

gravity = drawCircle("XZ", 64, 500, 360);
gravity.position.x = lod.position.x;
gravity.position.y = lod.position.y;
gravity.position.z = lod.position.z;


scene.add( lod );
//objects.push( lod );
scene.add( gravity );
};

1 个答案:

答案 0 :(得分:0)

Raycaster将根据到射线原点的距离测试应该使用的网格。

这是Raycaster中的相关代码:

} else if ( object instanceof THREE.LOD ) {

    matrixPosition.setFromMatrixPosition( object.matrixWorld );
    var distance = raycaster.ray.origin.distanceTo( matrixPosition );

    intersectObject( object.getObjectForDistance( distance ), raycaster, intersects );

}