three.js:挤出几何体的多种材质问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了three.js:挤出几何体的多种材质问题相关的知识,希望对你有一定的参考价值。

我使用three.js拉伸函数绘制几何图形,我想添加2个纹理,一个用于顶部和底部,一个用于其他边。

根据This Post,它似乎是可能的。但我无法使它成功。

这是我的代码:

    //Create BaseForm (Bottom)
    var shape = new THREE.Shape();
    shape.moveTo(0,0);
    shape.lineTo(0,2);
    shape.lineTo(0.5,1.5);
    shape.lineTo(1,2);
    shape.lineTo(1,0);
    shape.lineTo(0.5,0.5);
    shape.lineTo(0,0);
    //Extrude XScores
    var extrudeSettings={amount: 50, bevelEnabled: false, material: 0, extrudeMaterial: 1, steps: 10};
    var geometry = new THREE.ExtrudeGeometry( shape, extrudeSettings );

    var material1 = new THREE.MeshStandardMaterial({color: 0x111111, roughness: 0.1, metalness: 0.4, side: THREE.DoubleSide});
    var material2 = new THREE.MeshStandardMaterial({color: 0x8dbe8d, roughness: 0.7, metalness: 0, side: THREE.DoubleSide});

    var materials = [
        material1,
        material2];

    var localmesh = THREE.SceneUtils.createMultiMaterialObject(geometry,materials);     
    return localmesh;

但是只有一个纹理应用于所有面(material2)。

注意:由于我在小物体上挤出问题,我使用了耳机。

谢谢您的帮助,

答案

你需要这样做:

var localmesh = new THREE.Mesh(geometry, materials);

THREE.SceneUtils.createMultiMaterial()用于其他目的。它只是创建两个相同几何体的对象,但在同一个地方使用不同的材质。

以上是关于three.js:挤出几何体的多种材质问题的主要内容,如果未能解决你的问题,请参考以下文章

Three.js开发指南---使用three.js的材质(第四章)

Three.js - 在自定义几何图形上平滑着色 Lambert 材质的问题

使用Three.js的材质

使用Three.js的材质

Three.js 3D建模必备基础

Three.js 在通过 OBJMTLLoader 加载的对象上的多种材质