首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >three.js:如何将材质数组添加到八面体几何体

three.js:如何将材质数组添加到八面体几何体
EN

Stack Overflow用户
提问于 2018-02-11 16:07:59
回答 1查看 1.5K关注 0票数 1

我想在THREE.OctahedronGeometry中添加多个材料。这对于长方体对象很有效,但对于THREE.OctahedronGeometry,我只能在所有面上获得第一个材质。如何在每个面上获得不同的材质?

代码语言:javascript
复制
        var geometry = new THREE.OctahedronGeometry(1, 0);

        var materials = [
            new THREE.MeshPhongMaterial( { color: 0x050505, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0xeeeeee, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0x060606, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0xeeeeee, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0x050505, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0xeeeeee, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0x070707, dithering: true } ),
            new THREE.MeshPhongMaterial( { color: 0xeeeeee, dithering: true } )
        ];

        var someMesh = new THREE.SceneUtils.createMultiMaterialObject( geometry , materials );

        someMesh.castShadow = true; //default is false
        someMesh.receiveShadow = true; //default
        scene.add( someMesh );
EN

回答 1

Stack Overflow用户

发布于 2018-02-12 00:31:48

通过指定组,可以将对多材质的支持添加到任何THREE.BufferGeometry。使用像这样的模式:

代码语言:javascript
复制
var geometry = new THREE.OctahedronBufferGeometry( 5, 0 );

geometry.clearGroups(); // just in case
geometry.addGroup( 0, 3, 0 ); // first 3 vertices use material 0
geometry.addGroup( 3, 3, 1 ); // next 3 vertices use material 1
geometry.addGroup( 6, Infinity, 2 ); // remaining vertices use material 2

var materials = [
    new THREE.MeshBasicMaterial( { color: 0xff0000 } ),
    new THREE.MeshBasicMaterial( { color: 0x00ff00 } ),
    new THREE.MeshBasicMaterial( { color: 0x0000ff } ),
];


var mesh = new THREE.Mesh( geometry, materials );
scene.add( mesh );

如果必须使用THREE.Geometry,则可以通过为每个面指定材质索引来添加对多材质的支持。参见three.js updating geometry face materialindex

如果要做的只是在每个面上使用不同的颜色,则指定面颜色或顶点颜色并使用单个材质渲染整个几何体会更有效。(但这是另一个问题。)

three.js r.89

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48729579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档