【问题标题】:Creating a transparent cylinder创建透明圆柱体
【发布时间】:2012-07-20 02:03:37
【问题描述】:

我正在尝试创建一个透明圆柱体。我试过设置透明、不透明度等,但似乎无法让它工作。有没有办法做到这一点?我需要加载带有 Alpha 通道的虚拟纹理吗?有没有更简单的方法?

material = new THREE.MeshBasicMaterial({wireframe: true});
material.transparent = true;
mesh = new THREE.Mesh(new THREE.CylinderGeometry(4, 4, 50, 8, 1, true), material);
scene.add(mesh);

更新:我已将代码更改为以下内容,但以这种方式使用 ShaderMaterial 似乎是错误的。但它有效...

material = new THREE.ShaderMaterial({wireframe: true, transparent: true});
mesh = new THREE.Mesh(new THREE.CylinderGeometry(4, 4, 50, 8, 1, true), material);
scene.add(mesh);

更新:这是图片。

  • 我无法正确添加图像或添加链接,因为我需要 11 的声誉,并且只有 10,所以我添加了损坏的链接。在每个网址前添加“h”。

ttp://img692.imageshack.us/img692/6412/shadermaterial.png 使用 ShaderMaterial,您会看到被透明圆柱体包围的矩形灰色 Sprite。

http://img855.imageshack.us/img855/3988/opacity00.png 使用不透明度为 0.0 的 MeshBasicMaterial。

http://img27.imageshack.us/img27/6087/opacity05.png 使用不透明度为 0.5 的 MeshBasicMaterial。

http://img837.imageshack.us/img837/8043/opacity10.png 使用 MeshBasicMaterial 和 Opacity 1.0。

【问题讨论】:

    标签: javascript webgl three.js


    【解决方案1】:

    不应该是这个吗?

    material = new THREE.MeshBasicMaterial( { wireframe: true, opacity: 0.5 } );
    

    【讨论】:

    • 我在圆柱体内有一些东西(一个 Sprite)。如果我执行以下操作,Sprite 将不再可见,尽管背景会受到不透明度的影响。如果我将不透明度更改为 0.0,则 Sprite 是不可见的,而 1.0 它是一个白色圆柱体。材料=新的三。MeshBasicMaterial({线框:假,不透明度:0.5}); material.transparent = true;
    • 当然,我会得到这些。这与以下内容有关,我似乎无法与 Sprite 相交。 stackoverflow.com/q/11511787/1518845
    • 我已在问题中添加了指向屏幕截图的链接。
    • 就我而言,我必须这样做THREE.MeshBasicMaterial( { color: 0xffffff, opacity: 0.5, transparent: true } )。没有transparent: true 就无法工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多