[threejs]让导入的gltf模型显示边框

边框1效果图如下:

代码如下:

const gltfLoader1 = new GLTFLoader();
  gltfLoader1.load( "/assets/box/1/scene.gltf" ,function(gltf){
    let model = gltf.scene;
    model.scale.set(3,3,3)
    // scene1.add(model);
    // renderer1.render(scene1, camera1);

    model.traverse( function ( child ) {
      console.log(child)
      if ( child instanceof THREE.Mesh ) {
          let geometry = child.geometry;
          let material = child.material;
          let mesh = new THREE.Mesh(geometry, material);

          scene1.add(mesh);
          mesh.scale.set(0.03,0.03,0.03)
          const wireframeGeometry = new THREE.WireframeGeometry( geometry );
          const wireframeMaterial = new THREE.LineBasicMaterial( { color: 0xffffff } );
          const wireframe = new THREE.LineSegments( wireframeGeometry, wireframeMaterial );
          mesh.add( wireframe );
      }
  });

解析:

上述代码是对组成mesh的最小单元(mesh是由多个三角形组成)进行显示边框,所以会看到最终效果是三角形进行了描边

边框2效果图如下:

代码

const gltfLoader1 = new GLTFLoader();
gltfLoader1.load( "/assets/box/1/scene.gltf" ,function(gltf){
    let model = gltf.scene;
    model.scale.set(3,3,3)
    // 显示盒子的边框
    model.traverse( function ( child ) {
      console.log(child)
      if ( child instanceof THREE.Mesh ) {
          let geometry = child.geometry;
          let material = child.material;
          let mesh = new THREE.Mesh(geometry, material);

          scene1.add(mesh);

          const edges = new THREE.EdgesGeometry( geometry ); 
          const line = new THREE.LineSegments(edges, new THREE.LineBasicMaterial( { color: 0xffffff } ) ); 
          mesh.add(line)
      }
  });

解析:

这种边框方式也成为了outline around,就是对模型的边进行描边,显示一个特殊颜色,看效果就看出来了。两种方式用法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值