Three.js, пользовательская геометрия света

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

Спасибо, WestLangley, это отличный пример, я пробовал этот способ, но, к сожалению, у меня это не сработало. Я пробовал это:

var textTexture = new THREE.Texture( "textures/text.jpg" );
        //var textTexture = THREE.ImageUtils.loadTexture("textures/text.jpg");
        textTexture.format = THREE.RGBFormat;
        textTexture.wrapS = textTexture.wrapT = THREE.MirroredRepeatWrapping;
        textTexture.anisotropy = 4;
        var textLight = new THREE.AreaLight( 0xffffff, 3 );
        textLight.position.set( 10, 5, -5 );
        textLight.rotation.x = Math.PI / 2;
        textLight.width = 30;
        textLight.height = 10;
        textLight.texture = textTexture;
        scene.add(textLight)

person Antonio at work    schedule 21.02.2013    source источник


Ответы (1)


AreaLight работает только с WebGLDeferredRenderer, который достаточно новый, часть примеров (не библиотека), и примеров его использования не так много.

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

В этом примере вы можете заменить текстуру видео другой текстурой следующим образом:

// texture = new THREE.Texture( video );
texture = THREE.ImageUtils.loadTexture( "texture.jpg" );

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

три.js р.56

person WestLangley    schedule 21.02.2013
comment
Единственный способ, который я вижу, это наложить на стену размытую текстуру, которая будет казаться легкой иллюминацией. Использование THREE.MeshBasicMaterial - person Antonio at work; 26.02.2013
comment
То, что я предложил, работает. Я ожидаю, что в какой-то момент то, что вы хотите сделать, будет поддержано. На данный момент это лучшее, что вы можете сделать. Пожалуйста, не забудьте принять ответы, нажав на галочку. Спасибо. - person WestLangley; 26.02.2013
comment
Я попробовал то, что вы предложили, но Arealight светит обычным белым светом. Возможно, мне нужно что-то дополнительно к Three.js? - person Antonio at work; 27.02.2013
comment
То, что я предложил, будет работать только с модифицированной версией библиотеки three.js, которая используется в примере, на который я ссылаюсь. Я не думаю, что это будет работать с three.js r.56. Извиняюсь. Когда-нибудь, я ожидаю, так и будет. Ты просто немного раньше. :-) - person WestLangley; 27.02.2013
comment
Эта версия вызывает слишком много ошибок в моем приложении) Я исправлю их в обозримом будущем. В любом случае, благодарю Вас! - person Antonio at work; 28.02.2013