Three.js透明性错误

时间:2018-07-18 17:25:59

标签: javascript three.js

因此,我试图在我的网站上渲染3D头像,用户可以在其中将纹理放置在角色上。我想允许用户制作透明纹理,以便他们可以看到下面的模型。当前,透明性使躯干的整个正面不可见。有技巧或窍门吗?

渲染躯干的代码:

 onProgress, onError );
            loader.load( 'Models/<?php echo "$Item";?>', function ( object ) {
                object.traverse( function ( child ) {
                    if ( child instanceof THREE.Mesh ) {
                        child.material.map = texture;
                                                    child.material.side = THREE.DoubleSide;
                                                    child.material.alphaTest = 0.5;
                                                    child.material.transparent = true;
                    }
                } );
                                                        object.position.y = 50;
                                                                            object.scale.set(15,15,15);
                scene.add( object );
            },

目前,我的输出如下所示:

Screenshot of Output

感谢所有帮助!

1 个答案:

答案 0 :(得分:0)

执行此操作的方法有几种。最灵活的方法是使用画布纹理。然后在其中绘制基本纹理,然后在顶部绘制用户生成的透明纹理,然后将该画布纹理用于您的材料。如果需要,这可以让您在画布上做其他事情。

另一种方法是克隆整个对象,并将克隆附加到同一父对象,然后将用户生成的材质透明地分配给该克隆。.但是您必须注意原始对象及其克隆具有相同的对象定位和旋转/等等,否则您将发生Z角战斗。这是可行的,但也很痛苦。