将反射率值传递给JSONLoader

时间:2015-10-23 23:06:49

标签: json three.js

我正致力于开发在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文件中的任何反射率值?

1 个答案:

答案 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>