Куб ThreeJS с разными текстурными гранями, освещенными точечным светом с помощью средства визуализации холста?

Я пытаюсь нарисовать куб, который использует 6 разных изображений для текстур, по одному для каждой грани. Я хотел бы осветить куб точечным источником света.

Я использую средство рендеринга холста, потому что это платформа, доступная на iOS.

Я понял, что Ламберт — это то, что нужно. Я построил свой массив материалов, используя MeshLambertMaterial.

Мне удалось отрендерить куб с разными гранями, но без работающей подсветки, см. эту ссылку.

Здесь я использовал:

cube = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial());

(Чтобы просмотреть это, вам нужно использовать Firefox, в Safari на Mac это выглядит ужасно (но это другой вопрос), но в симуляторе iPhone все в порядке.)

У меня также работает версия, в которой подсветка работает, но все лица имеют одинаковый цвет, а изображения текстур кажутся потерянными, см. эту ссылку.

Здесь я использовал

cube = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial());

К сожалению, я не могу заставить текстурированные лица и освещение работать вместе.

Код отличается только этой одной строкой.

Должно быть, я делаю что-то не так, но я не могу понять, что это такое, все мои поиски в гугле были безрезультатными. Я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении.

Кстати, спасибо автору за это блестящее программное обеспечение.


person pedrevans    schedule 24.10.2012    source источник
comment
Я почти уверен, что некоторые источники света/материалы не работают в CanvasRenderer. Пробовали ли вы использовать WebGLRenderer, чтобы исключить это?   -  person Neil    schedule 24.10.2012
comment
В Firefox и Safari на Lion WebGLRenderer работает как надо. К сожалению, на iOS WebGL недоступен. По крайней мере, не в симуляторе iPhone 5.1, я не пробовал более позднюю версию.   -  person pedrevans    schedule 25.10.2012


Ответы (1)


К сожалению, оказалось, что MeshLambertMaterial не поддерживается CanvasRenderer.

person voithos    schedule 24.10.2012
comment
Я именно так и сделал в первом примере. Вы видите текстуры, но освещение не имеет никакого эффекта. Во втором примере вы видите, что освещение работает, но текстур нет. - person pedrevans; 24.10.2012
comment
@pedrevans: Ой, простите, я почему-то прочитал вашу первую строчку как MeshBasicMaterial - person voithos; 24.10.2012
comment
Спасибо за ссылку на проблему. Ну, вернемся к чертежной доске :) - person pedrevans; 25.10.2012