在ThreeJS中使用PNG实现透明贴图效果

ThreeJS是一个基于WebGL的开源库,使用起来十分方便。不过由于是开源,所以相关文档相当稀少,本人把在学习过程中遇到的一些问题及解决方法整理成一个专栏,希望对大家可以有所帮助!

在ThreeJS中如果直接把PNG贴图赋给材质,是无法在场景中正常显示的,效果如下图所示:

贴图是自己随便找的PNG图片,所以效果比较那个,大家不要介意。

现在说一下解决方法,就是在材质中设置透明属性为true,代码如下:

child.material.transparent = true;

正确效果如下:

下面是完整的加载模型的代码:

//加载带贴图纹理的模型
    function LoadModelWithTexture()
    {

        //加载纹理
        var texture = new THREE.Texture();

        //加载图片
        var imgLoader = new THREE.ImageLoader(_manager);
        imgLoader.load(‘Model/ModelTest/map/bhtc_dql_cgd_002.png‘,function(img)
        {
            //将图片值赋于纹理
            texture.image = img;
            texture.needsUpdate = true;
        });

        //加载模型
        var _loader = new THREE.OBJLoader();
        _loader.load(‘Model/male02.obj‘,function(obj)
        {
            obj.traverse(function(child)
            {

                if (child instanceof THREE.Mesh)
                {
                    //将贴图赋于材质
                    child.material.map = texture;
                    //重点,没有该句会导致PNG无法正确显示透明效果
                    child.material.transparent = true;
                }
            });
            obj.position.x = -_modelDistance;
            _scene.add(obj);
        },onProgress,onError);
    }

  完工。

时间: 2024-10-13 07:04:29

在ThreeJS中使用PNG实现透明贴图效果的相关文章

[游戏模版13] 透明贴图 主角移动

>_<:just add previous two ways to achieve this new result 1 // stdafx.h : include file for standard system include files, 2 // or project specific include files that are used frequently, but 3 // are changed infrequently 4 // 5 6 #if !defined(AFX_ST

MATLAB中绘制质点轨迹动图并保存成GIF

工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t).^2);y = sin(2*t).*(sin(t).^2);z = t;comet(x,y,0.1); %绘制二维%comet3(x,y,z,0.1); %绘制三维 这有一个问题在于comet或comet3无法控制绘制的动画的速度,为了实现这一点,一个可行的方法是重写comet和comet3,在每

转 threejs中3D视野的缩放实现

Threejs基础部分学习知道透视相机new THREE.PerspectiveCamera(fov, aspect , near,far)中. fov视野角(拍摄距离)越大,场景中的物体越小.fov视野角(拍摄距离)越小,场景中的物体越大. 透视相机(近大远小) PerspectiveCamera //透视照相机参数设置 var fov = 45,//拍摄距离 视野角值越大,场景中的物体越小 near = 1,//相机离视体积最近的距离 far = 1000,//相机离视体积最远的距离 asp

Html5如何快速在页面中写出多个轮播图效果

我们在做项目的过程中,有时候客户需求要求你在同一个页面中,写几个不同样式的轮播图效果,那么如何快速实现呢?(要知道若果你每个轮播图都要用原生javascript写的话,会很麻烦,代码也不够简洁) 这里我们就可以借助插件来实现这一功能,swiper.js就是一个专门处理轮播图效果的js库,下面举例来说明: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"&g

[游戏模版8] Win32 透明贴图

>_<:The same with previous introduction. In the InitInstance fanction make a little change: >_<:Yes just add another picture "dra.bmp" and give the handle to dra.And then call function MyPaint(...) 1 hdc=GetDC(hWnd); 2 mdc=CreateComp

浅谈UML中常用的几种图——用例图

1.UML简介 统一建模语言(Unified Modeling Language,UML)又称标准建模语言,是始于1997年的一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置. *注:OMG, Object Management Group 对象管理组织 2.UML常见图分类 UML从考虑系统的不同角度出发,定义了用例图.类图.对象图.包图.状态图.活动图.序列图.协作图.构件图.部署图等10种图. 常见

Threejs 中建立可看到其内部的房间效果

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. var cubetex = THREE.ImageUtils.loadTexture('./maps/house_wall.png'); var

【转】MFC中png格式图片贴图的实现

原地址:MFC中png格式图片贴图的实现 学vc,正在做五子棋,五子棋中的图片格式都是bmp格式的,所以贴图用CBitmap可以很简单的实现.刚开始也没有在意那么多,今天刚把五子棋做完就兴冲冲的把代码和release版本的exe文件发给我的指导老师看,发现我的文件相当大,所以指导老师给我指出了bmp格式的图片比较占内存,让我寻找一下png格式的贴图. 于是我在网上搜索了大量的资料,看到了有用API OleLoadPicture来加载JPG.GIF格式的图片,但是这种方法不支持png格式,并且GI

编程学习之如何在Node.js中优化服务器端渲染?[图]

编程学习之如何在Node.js中优化服务器端渲染?[图]在 Airbnb,我们花了数年时间将所有前端代码迁移到 React 架构,Ruby on Rails 在 Web 应用中所占的比例每天都在减少.实际上,我们很快会转向另一个新的服务,即通过 Node.js 提供完整的服务器端渲染页面.这个服务将为 Airbnb 的所有产品渲染大部分 HTML.这个渲染引擎不同于其他后端服务,因为它不是用 Ruby 或 Java 开发的,但它也不同于常见的 I/O 密集型 Node.js 服务.一说起 Nod