Three.js中的灯光看起来与3DS Max不同

时间:2014-02-08 17:23:03

标签: three.js webgl lighting 3dsmax

我正在使用Three.js的r65。当我在3ds max中点亮场景时,然后将其导出为obj以在Three.js中加载。我采取第二步,将模型导出到FBX,这样我就可以在Three.js中提取照明和加载。我注意到在Three.js中灯光不是那么“强”,几乎就像一个倍增器应该加到强度上吗?可能是因为我在Three.js的灯光下错过了一些属性吗?

以下是3ds Max中场景的样子 3ds max

以下是导入Three.js时的样子 Three.js

在打开gammaOutput和gammaInput之后,再次使用设置 gammaOutput on

所以看起来伽玛输出看起来好一些,但仍然不是我希望它看起来像3ds max。我创建了一个fiddle但由于Access-Control-Allow-Origin错误,我无法弄清楚如何让小提琴起作用,但希望那里的代码可以帮助我看到我想要做的事情。 / p>

// scene
scene = new THREE.Scene();

renderer = new THREE.WebGLRenderer();
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);

renderer.gammaOutput = true;
renderer.gammaInput = true;

container.appendChild(renderer.domElement);

loader = new THREE.OBJMTLLoader();

var modelFilePath = "http://goo.gl/ecHpSf?gdriveurl";
var materialFilePath = "http://goo.gl/bZWZEA?gdriveurl";

loader.load(modelFilePath, materialFilePath, function (object) {

        materials.push.apply(materials, object.children);

        scene.add(object);      
        object.position.set(0, 0, 0);
    });

// setup lighting
var light = new THREE.PointLight(0xffffff, 1);
light.position = new THREE.Vector3(32.2274, 54.6139, 38.2715);
light.distance = 103.74199676513672;
light.intensity = 1;
scene.add(light);

任何人都可以提出任何可能有用的建议,看起来我很接近。谢谢!

2 个答案:

答案 0 :(得分:0)

检查材质镜面反射分量。 R65改变了一点镜面反射分量 计算:#4636(WebGLRenderer:镜面反射分量实现) 我有类似的问题实现A3dsViewer 3ds转换器到three.js。 尝试导出/保存3ds文件,并使用A3dsViewer转换为three.js 也许这样的工作流程会有所帮助。

此外,这些设置可能有所帮助:

renderer.gammaInput = false; // do false
renderer.gammaOutput = true; 

答案 1 :(得分:0)

经过进一步的实验,我发现3ds max具有为远衰减开始/结束设置的值。据我所知,由于远衰减[End] == Distance,因此无法将此值导出到Three.js中。进行搜索时,看起来我受限于光源在Three.js中所采用的值。我将在SO上发表另一篇文章。