首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OBJMTLLoader()模型中的.png不透明

OBJMTLLoader()模型中的.png不透明
EN

Stack Overflow用户
提问于 2015-12-27 18:52:25
回答 1查看 771关注 0票数 1

我已经阅读了很多关于这个问题的问题和文章,但不管怎样,模型的png图像并不透明。相反,它的背景是白色的。像这样:

three.js: how to apply alpha-map when using OBJMTL loader?

Assigning Alpha channels to OBJ/MTL model meshes

Three.js png texture - alpha renders as white instead as transparent

也许有人知道如何修复它,以及添加什么代码?

renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });

代码语言:javascript
运行
复制
var loader = new THREE.OBJMTLLoader();
loader.crossOrigin = 'anonymous';
loader.load( 'model.obj', 'model.mtl', function ( object ) {
    object.position.set(0, 0, 0);
    object.traverse( function ( child ) {
        if ( child instanceof THREE.Mesh ) {
            child.castShadow = true;
            child.receiveShadow = true;
        }
        if ( child.material instanceof THREE.MeshPhongMaterial ) {
            child.material.opacity = 1;
            // child.material.alphaTest = 0.5;
            // child.material.depthWrite = false;
            // child.material.depthTest = false;
            // child.material.side = THREE.BackSide;
            child.material.transparent = true;
        }
    });
    scene.add(object);
});

model.mtl:

代码语言:javascript
运行
复制
newmtl Cap
    Ns 37.6553
    Ni 1.5000
    d 0.9990
    Tr 0.0010
    Tf 0.9990 0.9990 0.9990 
    illum 2
    Ka 0.7333 0.7333 0.7333
    Kd 1.0000 1.0000 1.0000
    Ks 0.0980 0.0980 0.0980
    Ke 0.0000 0.0000 0.0000
    map_Kd Cap_01.png
    map_bump Cap_01_Normal.png
    bump Cap_01_Normal.png

newmtl Bark
    Ns 37.6553
    Ni 1.5000
    d 1.0000
    Tr 0.0000
    Tf 1.0000 1.0000 1.0000 
    illum 2
    Ka 0.7333 0.7333 0.7333
    Kd 1.0000 1.0000 1.0000
    Ks 0.0980 0.0980 0.0980
    Ke 0.0000 0.0000 0.0000
    map_Kd BroadleafBark.png
    map_bump BroadleafBark_Normal.png
    bump BroadleafBark_Normal.png

newmtl Leaves
    Ns 37.6553
    Ni 1.5000
    d 1.0000
    Tr 0.0000
    Tf 1.0000 1.0000 1.0000 
    illum 2
    Ka 0.7647 0.7647 0.7647
    Kd 1.0000 1.0000 1.0000
    Ks 0.4118 0.4118 0.4118
    Ke 0.0000 0.0000 0.0000
    map_Kd BroadleafLeaves.png
    map_Ks BroadleafLeaves_Spec.png
    map_d BroadleafLeaves_Alpha.png
    map_bump BroadleafLeaves_Normal.png
    bump BroadleafLeaves_Normal.png
EN

回答 1

Stack Overflow用户

发布于 2015-12-28 16:27:54

终于来了!我找到了解决方案。我已经用threejs脚本(How to convert object to json file for three.js model loader)的作者将.obj转换为.js加载器,然后使用JSONLoader()

代码语言:javascript
运行
复制
var loader = new THREE.JSONLoader();
loader.load('model.js', function(geometry, materials) {
   var material = new THREE.MeshFaceMaterial(materials);
   var object = new THREE.Mesh(geometry, material);
   ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34479695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档