【问题标题】:intersectObjects not returning obj from OBJMTLLoaderintersectObjects 未从 OBJMTLLoader 返回 obj
【发布时间】:2015-12-15 02:50:11
【问题描述】:

我有一个要添加到场景中的对象。我在场景中还有其他各种立方体。我正在使用以下代码来触发 Ray 并查看是否可以检测到碰撞:

var ray = new THREE.Raycaster(camera.position, vec);
var intersects = ray.intersectObjects( scene.children ); 

由于某种原因,会检测到常规形状(立方体),但不会检测到从 obj 文件加载的对象。

var loader = new THREE.OBJMTLLoader();
loader.load( 'models/technicalTable1.obj', 'models/technicalTable1.mtl', function ( obj ) {

    obj.scale.set(0.4, 0.4, 0.4);
    obj.position.x = - roomWidth/2 + 100;
    obj.position.y = 36;
    obj.position.z = - roomLength/2 + 25;

    scene.add( obj );

}, onProgress, onError );

感谢您的帮助!

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    您需要将递归标志传递给Raycaster.intersectObjects()

    var intersects = ray.intersectObjects( scene.children, true ); 
    

    three.js r.70

    【讨论】:

    • 嘿,我真的试过了,但没有奏效。还有其他想法吗?
    • 如果有困难,请使用EventControls
    【解决方案2】:

    它不起作用,因为 OBJMTLLoader 创建了 Three.Group 该组没有 raycaster.intersectObjects (我刚刚完成了跟踪它,它去了一个未实现的功能 这确实限制了 OBJ 对象的使用。 我已经尝试过 JSON,但是由于您无法加载材料并且必须创建 UVmap,因此我发现我需要一个可以 3D 建模或无法使用 intersectObjects 的人。 不知道是不是bug

    【讨论】:

      猜你喜欢
      • 2013-03-12
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 2014-01-17
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多