Three.js: Карты теней - отбрасывание теней на прозрачную плоскость

Созданный на 23 апр. 2012  ·  28Комментарии  ·  Источник: mrdoob/three.js

Привет,

Мне нужно отбрасывать тени на прозрачную плоскость, чтобы получить только отображаемую тень, а не материал, примененный к плоскости (я хочу, чтобы она была полностью прозрачной). Возможно ли это в three.js? Я использую THREE.SpotLight качестве источника света.

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

благодаря

Question

Самый полезный комментарий

По состоянию на r77 ShadowMaterial теперь в ядре.

Все 28 Комментарий

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

Я не думаю, что это возможно.

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

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

См. Также обсуждение в №1509

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

Да, думаю, он имеет в виду именно это.

Для справки, если кому нужно http://pastie.org/5088640

@skrat Спасибо за этот шейдер. Отлично работает для ловца теней!

@etx эээ, а что делает этот шейдер? : U

Он просто дает мне тень с альфа-каналом, а остальная часть объекта с этим шейдером невидима. Это похоже на ловушку теней в программном обеспечении CGI. Я использую threejs для рендеринга продукта поверх фотографии, поэтому это очень полезно.

О верно. Таким образом, он дает вам черную текстуру с видимостью, сохраненной в альфа-канале. Верный?

Ага!

@etx Как этого добиться с помощью шейдера выше? я получаю просто черный самолет ...

Я искал способ получить его эффект, однако, используя приведенный выше фрагмент, я получаю ошибку THREE.WebGLShader: Shader couldn't compile. .

@skrat, есть ли шанс, что вы сможете повторно загрузить этот шейдер? ссылка pastie больше не работает, и я столкнулся с той же проблемой. заранее спасибо!

@etx @skrat Не могли бы вы повторно загрузить обновленный шейдер? Тот, который вы опубликовали, похоже, больше не работает, например, @JosephClay, я получаю ошибку "шейдер не может скомпилировать" ...

Попробуйте THREE.ShadowMaterial() . См. Этот пост stackoverflow.

@WestLangley, как вы думаете, мы должны продвигать ShadowMaterial в ядро?

@WestLangley большое спасибо - это решило проблему. @mrdoob Я думаю, что это очень полезная функция, которую многие знают по GCI, так что это может быть хорошим продвижением для ядра

@WestLangley, как вы думаете, мы должны продвигать ShadowMaterial в ядро?

У меня нет сильного предчувствия, так или иначе ... Если я не ошибаюсь, он страдает той же недостаточностью, что и MeshLambertMaterial - тексель в тени одного источника света не получает света от любого другого источника света .

Да, это маска. В основном такие, какими были старые тени.

Привет,

ShadowMaterial звучит именно так, как мне нужно, и я так счастлив, что вы его реализовали, но я не могу понять, какую версию three.js мне нужно загрузить / связать, чтобы заставить ее работать. Можете ли вы указать мне правильное направление?

r74 или новее

Спасибо! Я все еще получаю THREE. ShadowMaterial не является конструктором.

Пока не входит в сборку, находится в папке примеров. Его нужно включать отдельно:

<script src="js/materials/ShadowMaterial.js"></script>

продвинет его и в ядро, это 4кб

Отлично спасибо! Раньше я искал файл shadowMaterial и не мог его найти.
Прекрасно работает для моих нужд.

По состоянию на r77 ShadowMaterial теперь в ядре.

@mrdoob отличный ход, спасибо

Попробуйте THREE.ShadowMaterial() . См. Этот пост stackoverflow.

Благодарю.
Оно работает!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги