我正在使用Three.js的r65。当我在3ds max中点亮场景时,然后将其导出为obj以在Three.js中加载。我采取第二步,将模型导出到FBX,这样我就可以在Three.js中提取照明和加载。我注意到在Three.js中灯光不是那么“强”,几乎就像一个倍增器应该加到强度上吗?可能是因为我在Three.js的灯光下错过了一些属性吗?
以下是3ds Max中场景的样子
以下是导入Three.js时的样子
在打开gammaOutput和gammaInput之后,再次使用设置
所以看起来伽玛输出看起来好一些,但仍然不是我希望它看起来像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);
任何人都可以提出任何可能有用的建议,看起来我很接近。谢谢!
答案 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上发表另一篇文章。