背景

threejs 的版本是 0.147.0。使用 GLTFLoader 加载 GLTF 模型文件发现材质(Material)没有显示。

打开开发者工具发现有 Warning:THREE.GLTFLoader: Unknown extension "KHR_materials_pbrSpecularGlossiness"

解决方案

降级

另外一个工程使用了 Threejs 的 0.126 版本,可以正常显示。但具体到哪个版本缺少支持没有做认证。

修改模型文件

打开 gltf.report 网站。打开模型文件,会弹框提示,不支持 KHR_materials_pbrSpecularGlossiness,会把材质转换成 metal/rough(即这个办法的原理就是把不支持的材质类型转换成支持的,副作用就是缺失一些特性)。

点击确定,可以看到材质是可以加载的。

再点击右边的 export,保存成新的 gltf/glb 文件,再使用 threejs 加载新的模型文件就可以正常显示了。

扩展

KHR_materials_pbrSpecularGlossiness 是什么?

定义:KHR_materials_pbrSpecularGlossiness 是一个GLTF材质扩展。
规范文件:https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_materials_specular/README.md

从规范文件知道,这个扩展主要是给 metallic-roughness 模型添加两个参数:specularspecularColor
metallic-roughness 模型是一种物理式渲染(physically based rendering,PBR)材质模型。

扩展阅读:

  • glTF(二):PBR

gltf.report 的其他用处

gltf.report 使用了 glTF-Transform 库,这个库和网站都是同一个作者。

优化模型


点击右上角的 Run,就会执行其中的代码,里面的代码做了4件事情:

  1. 去除重复的顶点和贴图数据
  2. 重采样动画
  3. 去除无用的 nodes 和贴图以及其他数据
  4. 把贴图缩放到 1K 以下

后面可以根据 gltf-transform 的库进行相关处理。

导出的时候压缩模型

在右侧的 Export 菜单上,在 compression 选项可以选择使用 DracoMeshopt的压缩方式。

如果在 Threejs 里面使用,压缩后的模型不能直接用 GLTFLoader 加载,需要添加对应的扩展。比如使用了 Draco 后,参考:DRACOLoader。

解决 Threejs 无法加载 GLTF 模型的材质,报错 Unknown extension “KHR_materials_pbrSpecularGlossiness相关推荐

  1. ThreeJS FBXLoader 加载3D文件,材质消失,已解决

    ThreeJS FBXLoader 加载3D文件,材质消失,已解决 ThreeJS FBXLoader 加载3D文件,材质消失 直接贴代码 ThreeJS FBXLoader 加载3D文件,材质消失 ...

  2. three.js 加载gltf模型的简化demo

    目录 前言 下载依赖 改造插件 主要代码 效果 前言 最近需要做一个three.js加载三维模型的,才发现three.js的官网和网上的示例挺乱的.甚至有人说把three.js的全部demo下载下来, ...

  3. python加载模型_解决python 无法加载downsample模型的问题

    downsample 在最新版本里面修改了位置 from theano.tensor.single import downsample (旧版本) 上面以上的的import会有error raise: ...

  4. cesium加载 gltf模型

    cesium加载 gltf模型 首先自己配置一个iis环境 :http://www.xitongcheng.com/jiaocheng/win10_article_60912.html,其他环境 比如 ...

  5. Babylonjs 加载Gltf模型添加动画、点击事件、天空盒、标签

    加载Gltf模型方法.模型点击事件.label标签.天空盒 import React, { useState, useEffect, useRef } from 'react' import TWEE ...

  6. three.js加载obj模型和材质

    1.Vue中安装three.js和加载用的包 安装three.js使用npm install three --save 安装加载obj和mtl文件的包npm install three-obj-mtl ...

  7. 移植驱动完毕后加载时的version magic报错原因以及解决办法

    History:2012-02-17 Author:yingru 移植rt3070的AP驱动到装有fedora14的PC机上时,模块编译完毕后,加载时提示invalid module format. ...

  8. threejs加载C4D模型及材质渲染实例

    最近在学习Threejs3D引擎使用,主要是为了实现web里面去实现3D模型的加载渲染,这样会比较直观的看到类似的效果,增加用户体验. 第一步:加载C4D模型.将模型和材质导出 二.加载主要插件模块 ...

  9. threejs学习--vue-cli集成threejs后,加载gltf模型FPS很低问题解决(四)

    vue集成threejs后,web页面加载模型之后,FPS值在10以下:查阅资料是因为:声明的部分threejs的对象不可以放在data中:否则就会帧数特别低: 以下为修改之后代码 <templ ...

最新文章

  1. 4g8核支持多少php进程,服务器8核16g内存,同时有1000多人在抢红包,有502怎么办?...
  2. 如果再写for循环,我就锤自己!
  3. 卡尔曼滤波(kalman)相关理论以及与HMM、最小二乘法关系 转
  4. IntelliJ 中设置与Eclipse中 Ctrl+1 功能类似的快捷键
  5. PHP安装swoole扩展
  6. 572. 另一个树的子树
  7. Cow Contest POJ - 3660(floyed求传递闭包)
  8. mysql中的派生表
  9. 大数据学习笔记16:MR案例——计算学生平均成绩
  10. 用另一种方式来讲解代理模式~
  11. android 圆点指示器,ViewPager加上小圆点指示器效果
  12. 吉大计算机学院周柚,周柚
  13. PCM音频数据的声音分贝值计算
  14. PC端,微信扫码实现拨打电话的功能
  15. 微信小程序云开发—校园动物图鉴
  16. 【vulhub】gitea
  17. Flume常用组件详解之Source
  18. 以post的方式发请求,传参在url中
  19. JavaScript学习攻略
  20. 人民币贬值波及海外代购:海淘族成本上涨

热门文章

  1. HC32F003 国产低功耗华大MCU芯片介绍
  2. 计算机网络自顶向下方法(一)——计算机网络和因特网
  3. 梅科尔工作室-位青-鸿蒙笔记4
  4. python字典破解zip密码
  5. NFS-Ganesha
  6. 更新(D-U-N-S)邓白氏码公司信息(注册勿看)
  7. iOS 开发----个人开发者帐号升级为公司开发者帐号
  8. java半角英数check_如何进行全半角英数字记号カナ及汉字的チェック?
  9. 那些优秀的开发者----汪宇杰:从重视细节,到成就技术专家
  10. Tikz作图教程:图论中环的画法