Вопрос по javascript – Three.js: самолет виден только половину времени

25

Я создал плоскость, которую я вращаю, используя Three.js. По какой-то причине самолет не показывает половину времени. Я создал скрипкуВот показывая поведение.

Ваш Ответ

2   ответа
15

Он не виден, потому что задняя поверхность плоскости не визуализируется (или, точнее, плоскость не имеет задних поверхностей по умолчанию.противоположная сторона-забой в соответствии с этим. Хотя в этом случае это не проблема, это может дать вам некоторое представление о рендеринге).

Three.js дает вам очень простой способ рендеринга задних поверхностей.

В Three.js -r49 and below:

Все, что вам нужно сделать, это установитьdoubleSided - свойство вашего самолета-объекта к истине.

plane.doubleSided = true;

Для более новых версий -r50 and up

В более новых версиях, как donnyB уже правильно указал в своем ответе, свойство было перемещено изObject3D - возражать противMaterial - объект, поэтому вам нужно установить его немного по-другому, например:

plane.material.side = THREE.DoubleSide;

Также отредактировал вашу скрипку, чтобы показать вам:http://jsfiddle.net/VsWb9/1084/

он использует Three.js - версию новее, чем r50, свойство установлено в строке 35

отличная работа, не знаю, что ваше решение было для этих изменений, приятно знать. Спасибо!
Это больше не работает на основе тестирования в п.58
@mattdlockyer обновил ответ, чтобы охватить и новые версии
поднял это! Спасибо
@mattdlockyer Возможно, вам следует удалить понижающий голос сейчас, если он ваш.
38

Обратите внимание, что это немного изменилось в версии Three.js r50. Рендеринг обеих сторон плоскости может быть достигнут черезside собственность на Материал, т.е.

plane.material.side = THREE.DoubleSide;

ПосмотритеВот Больше подробностей.

Вы знаете, как получить 2 разные текстуры с двух сторон? Кто-нибудь?
@mattdlockyer У меня был тот же вопрос, и это помогло мне:stackoverflow.com/questions/11709760/…

Похожие вопросы