javascript - Three.js - 如何在指定图层上获取 THREE.ArrowHelper?

标签 javascript three.js layer

我是 Three.js 的新手,正在尝试弄清楚如何将内容放在不同的层上。

我有一个 Arrowhelper,它被初始化、配置并添加到场景中,如下所示:

    var arrowLeft = new THREE.ArrowHelper(direction, center, length, 0x884400);
    arrowLeft.layers.set(1);
    scene.add(arrowLeft);

我还有一个具有字体和 THREE.MeshPhongMaterial 的网格:

    var loader = new THREE.FontLoader();
    loader.load( 'fonts/helvetiker_bold.typeface.json', function ( font ) {

        var textGeo = new THREE.TextGeometry( "My Text", {
            font: font,
            size: 1 * globalScale,
            height: 0.01,
            curveSegments: 12
        });

        var textMaterial = new THREE.MeshPhongMaterial( { color: 0xff0000 } );
        var mesh = new THREE.Mesh( textGeo, textMaterial );

        mesh.layers.set(1);
        mesh.position.set( 2, 0, zPos);

        scene.add(mesh);
    } );

我的渲染函数如下所示:

    function render() 
    {
        camera.layers.set(1);
        renderer.render(scene, camera);
        controls.update();
    }

我看到的结果只是网格,而不是箭头。我究竟做错了什么? 使用 console.log 记录箭头对象,告诉我它位于第 1 层并且可见。

当我将渲染函数更改为:

    function render() 
    {
        camera.layers.set(0);
        renderer.render(scene, camera);
        controls.update();
    }

...仅显示箭头。 我使用的是 Three.js 修订版 85。

最佳答案

ArrowHelper 实例化一个带有子对象的对象,因此您需要为层次结构中的每个对象设置层。 layers 属性不是继承的。

使用这样的模式:

light.layers.set( 0 ); // don't forget to set the light layers
light.layers.enable( 1 );

mesh.layers.set( 1 );

arrowHelper.traverse( function( node ) { node.layers.set( 1 ); } );

camera.layers.set( 1 );

三.js r.85

关于javascript - Three.js - 如何在指定图层上获取 THREE.ArrowHelper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44279604/

相关文章:

javascript - 使用传单创建标记层

css - 单击 div 到底层元素

javascript - 何时使用 ES2017 内置的 'async' 或导入 'npm i async'

javascript - 无法删除引导按钮边框

javascript - 我必须将我想要在 Eclipse 上的动态 Web 项目中使用的 xml 文件放在哪里?

javascript - THREE.js - 相对于具有旋转/缩放父项的屏幕移动对象

javascript - 使用 Three.js 在立方体中制作图像库

javascript - 在页面加载时触发 Javascript 文本和图片预览

reactjs - 如何在下一个 js 中从节点模块外部的文件夹中导入模块

ios - 图层 maskToBounds 默认值不起作用