1

在three.js 中,我似乎无法找到如何定位/更改从Blender 导入的网格的颜色。任何帮助将不胜感激。

此外,如果知道如何让所述面(或任何网格中的面)“重叠”或首先出现在所有其他面之上,也将是一件很棒的事情。

        loader = new THREE.JSONLoader();
        var callbackDice   = function( geometry ) { createMesh(geometry); };
        loader.load( "js/untitled.js", callbackDice );

function createMesh(geometry){
        material = new THREE.MeshNormalMaterial();
        mesh = new THREE.Mesh( geometry, material);
        mesh.scale.set( 75, 75, 75 );
        mesh.position.x = -1;
        scene.add( mesh);
    }

这就是我将需要的网格插入到场景中的方式。我想定位一个特定的脸并改变它的颜色,但我不知道该怎么做,因为它不是三个对象的实例。

4

1 回答 1

1

THREE.Mesh其实也是THREE.Object3D。但是,我认为这不会直接帮助您。

我相当更新 wiki 页面

您可以自由更改用于几何块的材质,您无法更改对象被划分为块的方式(根据面材质)。

如果您在运行时需要有不同的材质配置,如果材质/块的数量很少,您可以预先划分对象(例如头发/面部/身体/上衣/裤子,正面/侧面/顶部/玻璃/轮胎/汽车内饰)。

如果数量很大(例如每张脸可能不同),请考虑不同的解决方案,使用属性/纹理来驱动不同的每张脸外观。

由此推断,要么为每个可选面使用自己的材料(因此您可以在选择时更改它),或者编写一个自定义解决方案,可以动态地为纹理的相关部分着色,或者使用自定义属性缓冲区来传达彩色面。

我能想到的另一种选择是以顶点颜色烘焙颜色并使用它们。尽管那时您可能会获得颜色插值,但仍需要确保将修改后的缓冲区上传到 GPU。

至于“面面相觑”,我不太明白你想要什么。你想从网格中“分解”脸部,旋转它以面对相机还是确保脸部的深度顺序正确?

于 2012-10-31T07:02:12.277 回答