我正致力于开发在Maya中制作场景的工作流程,使用ThreeJS JSON导出器导出它们并通过JSONLoader加载它们。
我希望它能够设置,以便我可以将多个对象,材质和动画全部存储在一个JSON文件中,每个场景几乎没有代码操作。
现在我遇到了一些需要使用环境贴图的问题。实际上,这不是问题所在。问题是,我无法找到一个好的方法来设置反射率"值。
目前,我已经设置好了如果我有"反光"在maya中的材质名称中,加载器将自动应用envMap。
loader.load( "./3Dobjects/Materials.js", function( geometry, materials ) {
materials[ 0 ].morphTargets = true;
for (var k in materials){
materials[k].skinning = true;
}
//In Maya, add the word "Reflective" to any material that should have environment reflections.
for(var i = 0; i < materials.length; i++){
if(materials[i].name.indexOf("Reflective")>-1 ){
materials[i].envMap = envTexBlurred;
}
}
jsonMesh = new THREE.SkinnedMesh( geometry, new THREE.MeshFaceMaterial( materials ) );
scene.add( jsonMesh );
animation = new THREE.Animation( jsonMesh, geometry.animations[0] );
animation.play();
});
据我所知,ThreeJS maya出口商并未从任何给定材料(朗伯,法国等)读取反射率值。我可以将这个值添加到JSON文件中,但是当它被加载器创建时,它似乎没有传递到材料中。
例如,在JSON文件的摘录中,我已经为&#34; reflectivity&#34;添加了一个值。但它被忽略了。
{
"DbgName": "phongReflective",
"blending": "NormalBlending",
"colorAmbient": [
0.0,
1.0,
0.0
],
"colorDiffuse": [
1,
1,
1
],
"colorSpecular": [
0.5,
0.5,
0.5
],
"reflectivity": 0.1,
"depthTest": true,
"depthWrite": true,
"shading": "Phong",
"specularCoef": 20,
"opacity": 1.0,
"transparent": false,
"vertexColors": false
}
我对Javascript或Web开发一般不太好。我是一名3D艺术家,所以如果这是一个超级基本问题我会道歉。如何解析JSON文件以自动应用我已添加到JSON文件中的任何反射率值?
答案 0 :(得分:0)
<script>
json = [{
"DbgName": "phongReflective",
"blending": "NormalBlending",
"colorAmbient": [
0.0,
1.0,
0.0
],
"colorDiffuse": [
1,
1,
1
],
"colorSpecular": [
0.5,
0.5,
0.5
],
"reflectivity": 0.1,
"depthTest": true,
"depthWrite": true,
"shading": "Phong",
"specularCoef": 20,
"opacity": 1.0,
"transparent": false,
"vertexColors": false
}];
console.log(json[0]["reflectivity"]);
//// OR
var reflectivity = json[0]["reflectivity"];
</script>