三.js 通过加载模型上的 Material 名称为 Material 添加边框

标签 three.js

是否可以在 Material 周围添加边框,如图所示,

我可以通过以下代码设置 Material 颜色

object.traverse( function ( child )
    {
        if ( child instanceof THREE.Mesh )
            child.material.color.setRGB (1, 0, 0);
    });

其中 object 是我加载的 3d 模型,所以我假设应该有一种绘制边框的方法,three.js 中是否有任何选项。 enter image description here

根据@shiva 的评论,我尝试使用以下代码绘制发光效果
if(childObject.material.name=="material4046")
     {
      mesh  = new THREE.Mesh( globalGeomtry, material );
    // mesh.visible = false
    scene.add( mesh );

    console.log(mesh);

    // create a glowMesh
    var glowMesh    = new THREEx.GeometricGlowMesh(mesh);
    mesh.add(glowMesh.object3d);

            // example of customization of the default glowMesh
    var insideUniforms  = glowMesh.insideMesh.material.uniforms;
    insideUniforms.coeficient.value = 2;
    insideUniforms.power.value      = 1.4;
    insideUniforms.glowColor.value.set('red');

    var outsideUniforms = glowMesh.outsideMesh.material.uniforms;
    outsideUniforms.coeficient.value    = 2;
    outsideUniforms.power.value     = 1.4;

    outsideUniforms.glowColor.value.set('red');

     }

现在输出看起来像第二张图片enter image description here ,
我想要这种发光效果作为该 Material 周围的边界,这可能吗

最佳答案

我尽我最大的努力来实现它,但不幸的是我无法得到它,所以我决定使用线框选项来突出显示 Material ,

if(childObject.material.name=="material9695")
   {
    mesh    = new THREE.Mesh( globalGeomtry, material );
  // mesh.visible   = false
      scene.add( mesh );


  //console.log(mesh);

  var outlineMaterial1 = new THREE.MeshBasicMaterial( { color: 0xff0000,wireframe   : true } );
  var outlineMesh1 = new THREE.Mesh( globalGeomtry, outlineMaterial1 );

  scene.add( outlineMesh1 );


   }

现在为 Material 添加线框 material9695所以我可以识别 Material material9695当前被选中

这不是我预期的确切答案,但经过几个小时的努力,现在已经足够了
enter image description here

enter image description here

关于三.js 通过加载模型上的 Material 名称为 Material 添加边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25131593/

相关文章:

javascript - 从直线中删除线段?

javascript - 运行时添加灯光: materials not updated?

three.js - Three.js 加载已三角化的网格是否比使用四边形的网格性能更高?

javascript - 应用透视矩阵顺序

three.js - ThreeJS 中的阴影黑暗和对象不透明度

node.js - 多人游戏中的 Action 同步

javascript - 使用 THREE.Frustum 计算近/远平面顶点

Three.js | OrbitControls |如何换中心?

three.js - 需要基于网络的 AR 平面检测解决方案

three.js - 了解 Three.js 中物理正确的光照