【问题标题】:Three.js, custom light geometry三.js,自定义灯光几何
【发布时间】:2013-02-26 14:38:22
【问题描述】:

是否可以在 Three.js 中创建具有自定义几何形状的光源,例如象征。 Three.js 中的 Arealight 作为矩形光源,具有 wigth 和 height 参数。 最后,目标是获得由此类光源照亮的表面,这在视觉上就是那个自定义图形。

谢谢 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)

【问题讨论】:

    标签: three.js webgl light


    【解决方案1】:

    AreaLight 仅适用于 WebGLDeferredRenderer,这是相当新的,是示例的一部分(不是库),并且没有很多使用示例。

    如果您查看this example,您会看到电影纹理被用作光源。

    在本例中,您可以像这样用另一个纹理替换视频纹理:

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

    很遗憾,此示例使用的是库的修改版本。

    three.js r.56

    【讨论】:

    • 我看到的唯一方法是在墙上放置一个模糊的纹理,看起来像是灯光。使用 THREE.MeshBasicMaterial
    • 我的建议可行。我希望,在某个时候,你想做的事情会得到支持。目前,这是你能做的最好的。请记住通过单击复选标记“接受”答案。谢谢。
    • 我尝试过您的建议,但 Arealight 会发出普通的白光。可能我需要 Three.js 的额外内容?
    • 我的建议仅适用于我链接到的示例中使用的three.js 库的修改版本。我认为它不适用于three.js r.56。对不起。我希望有一天,它会的。你只是有点早了。 :-)
    • 这个版本在我的应用程序中导致太多错误)我会在可预见的将来修复它们。无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多