【问题标题】:three.js add border to material by materiel name on loaded modelsthree.js 在加载的模型上按材质名称为材质添加边框
【发布时间】:2014-08-05 05:13:30
【问题描述】:

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

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

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

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

根据@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');

     }

现在输出看起来像第二张图片, 我想要这种发光效果作为该材料周围的边框,有可能吗

【问题讨论】:

  • 嗨@Shiva 在使用这些功能时遇到了一些未定义的错误
  • 嗨@Shiva 检查更新代码,你能帮我吗
  • @JothiKannan: 你能把你的完整代码制作成一个 JSfiddle,如果你在加载模型 JS 文件时遇到任何问题,只需将它们上传到 Dropbox 的public files 文件夹,然后对它们进行 AJAX 调用,因为我不太确定答案,将不得不使用代码。

标签: three.js


【解决方案1】:

我想这就是你所追求的。它是通过以下方式实现的:

new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.BackSide } );

你可以在这里看到: https://stemkoski.github.io/Three.js/Outline.html

【讨论】:

    【解决方案2】:

    我尽力做到了我的水平,但不幸的是我无法达到它,所以我决定使用线框选项来突出显示材质:

    if(childObject.material.name=="material9695")
    {
        var mesh    = new THREE.Mesh( globalGeomtry, material );
        scene.add( mesh );
      
        var outlineMaterial1 = new THREE.MeshBasicMaterial( { color: 0xff0000,wireframe : true } );
        var outlineMesh1 = new THREE.Mesh( globalGeomtry, outlineMaterial1 );
      
        scene.add( outlineMesh1 );
    }
    

    现在为材质material9695 添加了线框,因此我可以确定当前选择了材质material9695

    这不是我预期的确切答案,但经过一些艰苦的工作现在就足够了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-07
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 2014-12-28
      • 2013-05-22
      • 2012-09-06
      • 2016-12-14
      相关资源
      最近更新 更多