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

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

Я использую Canvas Renderer, потому что это платформа, доступная на iOS.

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

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

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

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

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

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

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

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

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

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам