Освещение в Three.js выглядит иначе, чем в 3DS Max

Я использую r65 из Three.js. Когда я освещаю сцену в 3ds max, я затем экспортирую ее как объект для загрузки в Three.js. Я делаю второй шаг и экспортирую модель в FBX, чтобы извлечь освещение и загрузить в Three.js. Я заметил, что свет не такой "сильный" в Three.js, почти как множитель, возможно, должен быть добавлен к интенсивности? Может быть, мне не хватает какого-то свойства в Three.js?

Вот как выглядит сцена в 3ds Max 3ds max

Вот как это выглядит после импорта в Three.js Three.js

Поигрался с настройками, после включения gammaOutput и gammaInput gammaOutput on

Таким образом, это выглядит немного лучше с включенной гаммой, но все же не так, как я надеялся, в 3ds max. Я создал скрипку, но из-за ошибок Access-Control-Allow-Origin я не мог понять узнал, как заставить скрипку работать, но, надеюсь, код там поможет понять, что я пытаюсь сделать.

// 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);

Может ли кто-нибудь предложить что-нибудь, что могло бы помочь, похоже, я близок. Спасибо!


person mvcNewbie    schedule 08.02.2014    source источник
comment
FBX в основном предназначен для экспорта сетки и анимации, вы не можете доверять и ожидать, что освещение будет справедливо воспроизведено извне. Вам следует перестроить настройку освещения в своей сцене или настроить максимальные значения, но если экспортер внесет изменения в новые обновления, это может нарушить вашу настройку.   -  person piXelicidio    schedule 10.02.2014
comment
Денис, Спасибо за ваш вклад. Вы полностью пишете, чем больше я думаю об этом, освещение должно выполняться в движке рендеринга, а не в стороннем приложении для моделирования. Спасибо за понимание!   -  person mvcNewbie    schedule 11.02.2014


Ответы (2)


Проверьте зеркальный компонент материала. R65 немного изменил вычисление зеркального компонента: # 4636 (WebGLRenderer: реализация зеркального компонента) У меня аналогичная проблема с реализацией преобразователя 3ds A3dsViewer в three.js. Попробуйте экспортировать / сохранить файл 3ds и выполнить преобразование с помощью A3dsViewer в three.js, может быть, такой рабочий процесс поможет.

Дополнительно, возможно, помогут такие настройки:

renderer.gammaInput = false; // do false
renderer.gammaOutput = true; 
person Slider    schedule 08.02.2014
comment
Привет, слайдер, спасибо за подсказку! Я видел ту же проблему с r64, но вчера обновился, поэтому я могу быть уверен, что буду на последней версии. Попробую преобразовать A3dsViewer и обновлю сообщение, если я добьюсь успеха, спасибо! - person mvcNewbie; 08.02.2014
comment
Привет, Slider, обновляю пост после использования A3dsViewer, это на самом деле немного ухудшило качество. После экспорта из max в формат 3ds и экспорта из предложенного вами инструмента не похоже, что он учитывает расстояние. Но и в A3dsViewer это выглядело совсем иначе, чем в макс. Однако я собираюсь посмотреть, могут ли быть какие-то другие инструменты для экспорта. - person mvcNewbie; 09.02.2014
comment
Не могли бы вы прислать мне по электронной почте (или ссылку для загрузки) модель * .3ds, я бы проверил возможности и попытался исправить код экспорта. - person Slider; 11.02.2014

После дальнейших экспериментов я обнаружил, что 3ds max имеет значения, установленные для начала / конца дальнего затухания. Насколько я могу судить, нет возможности экспортировать это значение в Three.js, так как дальнее затухание [End] == Distance. Выполняя поиск, похоже, что я ограничен значениями, которые источник света принимает в Three.js. Я дополню это другим постом на SO.

person mvcNewbie    schedule 09.02.2014