相关疑难解决方法(0)

Three.js中同一网格面上的多个透明纹理

是否有可能在Three.js中的同一面上将多个纹理叠加在一起,以便在webGL中加速alpha加速?

纹理(或应该)应用于同一面,使得底部纹理(纹理1)没有alpha通道,并且上面的纹理以类似下面图像示例中的纹理2的方式被引导.

这种混合可以使用HTML5 Canvas作为前置步骤来实现,但由于纹理位图可能很大,我更喜欢跳过Canvas混合操作.

我通过创建网格的副本并对每个网格应用一个纹理进行测试,并使其他网格透明并移动了一点,几乎成功,但有一些闪烁,因为对象不能完全在同一位置,有一些纹理之间的空间不是正确的效果.他们看起来应该像是混合在一起.Photoshop(如下图所示).

在此输入图像描述

javascript textures alphablending webgl three.js

28
推荐指数
1
解决办法
2万
查看次数

如何用Threejs更改对象的zOrder?

我使用webgl渲染器创建了一个场景,我放置了多个可以选择和移动的3D对象.但是当选择一个对象时,我想绘制它的轴.将线条绘制到对象的中心没有问题,但我希望它们出现在场景中的任何其他内容之前,即使其他对象在前面也可以看到它们 - 就像在Blender中一样.

我尝试使用renderDepth参数,但我不认为我理解如何使用它,我没有得到任何结果.

谢谢您的帮助.

three.js

26
推荐指数
1
解决办法
2万
查看次数

Three.js - 渲染对象始终位于顶部

我正在尝试实现一个跟随屏幕上鼠标的命令箭头,但有时它最终隐藏在另一个对象后面。有没有办法调整 z 缓冲区或其他东西来始终将箭头渲染在顶部。我不想在顶部创建第二个场景(如此 处的解决方案所示:Three.js - Geometry on another )。谢谢。

javascript render three.js

7
推荐指数
2
解决办法
7525
查看次数

使用带有Three.js的renderDepth在顶部渲染对象

我正在尝试在其他对象之上渲染对象。

在小提琴中,将绿色圆环结渲染在红色框和地板的顶部。

我一直在尝试mesh.renderDepth = 0, 1, 1000,什么都没改变。

材质已如下创建:

  material = new THREE.MeshBasicMaterial( { color: 0x00ff00, transparent: true, opacity: 0.5 } );
Run Code Online (Sandbox Code Playgroud)

如何使用renderDepth实现此目的?我还有其他设置吗?

使用depthTestto true可以工作,但是不能接受,因为凹形网格(如圆环)会遇到多边形重叠的问题,尤其是在不透明的情况下。

虽然我没有设法在运行两个场景的情况下获得其他解决方案,但令我感到震惊的是,与仅使用一个场景相比,它具有更多的开销和灵活性,renderDepth

可以正常使用的JSFiddle:http//jsfiddle.net/QHssJ/

谢谢您的帮助

javascript three.js

2
推荐指数
1
解决办法
2418
查看次数

强制sprite对象始终位于THREE.js中的skydome对象前面

我目前有一个自定义着色器在天幕上绘制渐变,并希望在天幕前面有一个太阳/月亮(从用户的角度来看).最简单的方法就是拥有太阳和月亮的精灵,但出现的问题是精灵会被留在天幕内(精灵位于天幕的前方和中间位置).我试图用polygonoffset解决这个问题,但这似乎不适用于精灵对象.

所以我的问题是,如何在天空之上设置太阳/月亮而不必修改我的自定义天幕着色器以添加渐变的太阳/月亮纹理(这可能最终会非常困难)?

下面是我的天空着色器的代码.

new THREE.ShaderMaterial({
    uniforms: {
        glow: {
            type: "t",
            value: THREE.ImageUtils.loadTexture(DEFAULT_PATH+"glow2.png")
        },
        color: {
            type: "t",
            value: THREE.ImageUtils.loadTexture(DEFAULT_PATH+"sky2.png")
        },
        lightDir: {
            type: "v3",
            value: self.lightPos
        }
    },
    vertexShader: [
        "varying vec3 vWorldPosition;",
        "varying vec3 vPosition;",
        "void main() {",
            "vec4 worldPosition = modelMatrix * vec4(position, 1.0);",
            "vWorldPosition = worldPosition.xyz;",
            "vPosition = position;",
            "gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);",
        "}"
    ].join("\n"),
    fragmentShader: [
        "uniform sampler2D glow;",
        "uniform sampler2D color;",
        "uniform vec3 lightDir;",
        "varying vec3 vWorldPosition;",
        "varying vec3 vPosition;", …
Run Code Online (Sandbox Code Playgroud)

javascript shader sprite three.js

1
推荐指数
1
解决办法
2470
查看次数

标签 统计

three.js ×5

javascript ×4

alphablending ×1

render ×1

shader ×1

sprite ×1

textures ×1

webgl ×1