代码之家  ›  专栏  ›  技术社区  ›  ralcazar

如何在Three中添加前纹理和后纹理。js形状几何图形?

  •  2
  • ralcazar  · 技术社区  · 8 年前

    我正在创建一个圆角的平面几何图形。这是我代码的一部分。

        var geometry = new THREE.ShapeGeometry(shape);
        var front_material = new THREE.MeshPhongMaterial({ map: frontTexture, side: THREE.FrontSide });
        var back_material = new THREE.MeshPhongMaterial({ map: backTexture, side: THREE.BackSide });
        var materials = [front_material, back_material];
        mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials));
    

    此代码仅加载正面,并在背面渲染为不可见。 在谷歌上搜索了几个小时后,我找不到如何在当前的Three上添加materialIndex。js版本r78。

    我怀疑我只需要在这个问题上添加材料索引。

    1 回复  |  直到 8 年前
        1
  •  5
  •   WestLangley    8 年前

    如果要创建正面和背面具有不同材质的平面形状,可以使用此图案:

    var geometry = new THREE.ShapeGeometry( shape );
    
    var frontMaterial = new THREE.MeshPhongMaterial( { map: frontTexture, side: THREE.FrontSide } );
    var backMaterial = new THREE.MeshPhongMaterial( { map: backTexture, side: THREE.BackSide } );
    
    var materials = [ frontMaterial, backMaterial ];
    
    var object = THREE.SceneUtils.createMultiMaterialObject( geometry, materials );
    
    scene.add( object );
    

    研究的源代码 SceneUtils 所以你知道它在做什么。

    三js第78页