threejs 透明贴图,模型透明,白边

这篇具有很好参考价值的文章主要介绍了threejs 透明贴图,模型透明,白边。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

threejs 透明贴图,模型透明,白边,前端,贴图,前端,threejs,3dthreejs 透明贴图,模型透明,白边,前端,贴图,前端,threejs,3d

问题

使用Threejs加载模型时,模型出现了上面的问题。模型边缘部分白边,或者模型出现透明问题。

原因

出现这种问题是模型制作时使用了透明贴图。threejs无法直接处理透明贴图。

解决

方法一

场景一

模型有多个贴图时(一个透贴和其他贴图)

// 判断mesh1.material 是数组还是对象
if(mesh1.material instanceof Array){
    for (const materialObj of mesh1.material) {
        console.log(materialObj)
        if(materialObj.alphaMap !== null){
        
        	materialObj.depthWrite = true;
            materialObj.depthTest = true;
            materialObj.transparent = true
            materialObj.alphaTest=0.01;
            materialObj.opacity = 5;
            
        }
    }
}else {}
场景二

一个透明贴图

if(mesh1.material.alphaMap !== null){
   mesh1.material.transparent = true
   mesh1.material.alphaTest=0.01;
   mesh1.material.opacity = 5;
   mesh1.material.depthWrite = true;
   mesh1.material.depthTest = true;
}
场景三

有时模型有透明贴图但是到threejs里确无法识别出来,显示只有一张不带透明的贴图

mesh1.material.transparent = true
mesh1.material.alphaTest=0.01;
mesh1.material.opacity = 3;
其他方式

我这里的模型贴图是一张,所以在处理贴图时整个模型处理了。可以在建模时就将透明部分单独一张贴图,这样处理就不会出现误伤的情况了。(不知道为什么 unity里就不会出现这种问题)

核心代码
mesh1.material.transparent = true
mesh1.material.alphaTest=0.01;
mesh1.material.opacity = 5;

方法二(推荐)

上面的方法会丢失一部分模型内容。 我这里模型有两个贴图,常规贴图和透明贴图。所以直接去掉透明贴图,利用透明度测试去除透贴的透明部分显示。

mesh1.material.alphaMap = null
mesh1.material.alphaTest=0.01;

原理

透贴是自带 alpha通道的。默认开启透明 即transparent: true(以上参数全是在transparent: true下才生效),

处理模型透明
opacity 透明度 (可以调节透明的程度,0.0表示完全透明,1.0表示完全不透明).但是有透贴时 值为1时仍让是透明的,这时可以设置比1大的值调试

alphaTest :透明测试(所以透明测试的意思就是, 如果片元颜色的不透明度(alpha通道)低于预设的透明测试的值就会被抛弃。关键代码就这么点。)

透明测试详情
所以调小点就可以把白边过滤掉,不显示。

alphaTest:0.5
threejs 透明贴图,模型透明,白边,前端,贴图,前端,threejs,3d

其他

调整模型双边显示。(旋转下模型会只有一面显示)

materialObj.side = THREE.DoubleSide
官网文章

如何绘制透明的物体文章来源地址https://www.toymoban.com/news/detail-727376.html

到了这里,关于threejs 透明贴图,模型透明,白边的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Threejs 3D模型居中

    项目开发中难免会遇到客户导出的3D模型中心点并不在坐标中心,这时候直接渲染这个模型会发现模型位置会有所偏移 引用:Three.js模型居中

    2024年02月13日
    浏览(51)
  • 如何使用 ThreeJs 以 glTF、FBX 和 OBJ 文件格式加载 3D 模型,使用 ThreeJS 加载和显示带有纹理的 3D 模型

    在本文中,我展示了如何使用 ThreeJS 在 Web 视图中加载 3D 模型。Three.js 是一个跨浏览器的 JavaScript 库和应用程序编程接口,用于使用 WebGL 在 Web 浏览器中创建和显示动画 3D 计算机图形。加载不完整的原因有很多,例如纹理和材质渲染不正确。 创建场景 渲染场景 动画立方体

    2023年04月08日
    浏览(56)
  • threejs贴图系列(一)canvas贴图

    threejs不仅支持各种texture的导入生成贴图,还可以利用canvas绘制图片作为贴图。这就用到了CanvasTexture,它接受一个canas对象。只要我们绘制好canvas,就可以作为贴图了。这里我们利用一张图片来实现这个效果。 基础代码: 最后的展示效果如下:  这里特别要注意贴图异步问题

    2024年02月11日
    浏览(31)
  • 利用法线贴图渲染逼真的3D老虎模型

    在线工具推荐: 3D数字孪生场景编辑器  -  GLTF/GLB材质纹理编辑器  -  3D模型在线转换  -  Three.js AI自动纹理开发包  -  YOLO 虚幻合成数据生成器  -  三维模型预览图生成器  -  3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格: 写实风格 :这种风格

    2024年02月05日
    浏览(52)
  • 数字孪生平台3d模型制作-threejs

    threejs简化和封装了wegGL开发过程。 那么,js呢,它能写高效的3D程序吗?几年前写3D最好的世c++,js的计算能力随谷歌vs引擎得到增强。浏览器对threejs的支持,谷歌最佳。 thingjs threejs unity3D 物联网可视化平台 轻量级软件库 游戏引擎 支撑数十栋建筑园应用级,可支撑从地球到城

    2024年02月12日
    浏览(44)
  • 前端前沿web 3d可视化技术 ThreeJS学习全记录

    完整案例与项目代码: gitee开源项目地址 https://gitee.com/jumping-world-line/01_threeJS_basic 随着浏览器性能和网络带宽的提升 使得3D技术不再是桌面的专利 打破传统平面展示模式 前端方向主要流向的3D图形库包括Three.js和WebGL WebGL灵活高性能,但代码量大,难度大,需要掌握很多底层

    2024年02月01日
    浏览(63)
  • threejs加载.Fbx .OBJ 3D模型文件

    在threejs官网下载threejs的文件,可以选择直接下载,也可以跳转到GitHub拉取 拉取下来的完整文件就是这个样子 拉取成功后我们在本地安装启动服务,这样就能很快速的查看threejs的各种例子了 可以先看看官网里的例子,你想要的东西官方里面都有 后期在开发的时候需要用到b

    2023年04月08日
    浏览(44)
  • ThreeJS-3D教学八-OBJLoader模型加载+动画

    先看效果图: 本篇给大家介绍下模型加载的知识,用到了OBJLoader对应的模型,为了增加趣味性,花了些时间,利用new THREE.Points获取到模型上的点,做了一个动画效果,其实就是操作 Y轴上的点,先降低上0,然后再还原,代码如下: 如果有同学从我第一篇文章开始学到现在,

    2024年04月24日
    浏览(41)
  • 3D可视化集装箱货柜模型开发 --threejs

    教程效果实现效果     集装箱模型 箱子模型   中文文档:three.js docs 1.安装并 引入threejs 创建 安装threejs依赖包 在需要用的的代码文件里面引入threejs 2.实现3D模型最基础的渲染骨架部分 以下例子是在vue的项目里面实现一个简单的场景渲染,目前场景除了坐标轴并无其他物体

    2024年02月15日
    浏览(49)
  • Three.js--》前端开发者掌握3d技术不再是梦,初识threejs

            这十年来 web 得到了快速的发展,随着 webgl 的普及,网页的表现能力越来越强大,网页上已经开始可以做出很多复杂的动画和精美的效果,还可以通过 webgl 在网页中绘制高性能的3d图形,别的不说,凡是入门程序员都离不开github这个网站,细心的人都会发现,gi

    2024年02月01日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包