three-platformize
一个让 THREE 平台化的项目
- 目前已适配微信小程序(真机+模拟器),淘宝小程序(模拟器, 真机目前比较多问题)
- 支持 tree shaking (需用 webpack,rollup 等构建工具)
- VSCode types 正常,能正常访问各个类的定义
- 适配 examples/jsm/**/*.js ,types 正常
- 可升级、降级版本或使用自定义 THREE
- 微信小程序 IOS 内存优化,更少切页面导致的崩溃
- 支持自定义新平台适配,参考 WechatPlatform 编写适配器即可
| 微信小程序 DEMO 微信小程序基础版 DEMO |
淘宝小程序 DEMO |
|---|---|
![]() |
![]() |
已测试模块
Loader
- GLTFLoader (支持带纹理的 GLB) && (EXT_meshopt_compression 安卓可用 WASM,ios 可用 ASM 版,见 tools) && (KHR_mesh_quantization,小程序可用) [网格压缩测评] MeshQuan 、MeshOpt 、Draco
- TextureLoader
- RGBELoader & PMREMGenerator (小程序部分机型可能偶现生成 envMap 错误,可用HDRPrefilter避免 )
- SVGLoader
- OBJLoader
- EXRLoader (需支持 OES_texture_float_linear 扩展,部分移动端 GPU 不支持)
- MTLLoader (小程序使用 JPG 纹理即可)
- DDSLoader (需支持 WEBGL_compressed_texture_s3tc 扩展,移动端 GPU 不支持)
- LWOLoader (需支持 EXT_blend_minmax 扩展,小程序一半效果绘制出错)
- FBXLoader
- BVHLoader
- ColladaLoader (DOMParser querySelector 未适配)
- TTFLoader
- STLLoader
- PDBLoader
- TGALoader (改用 DataTextureLoader PR 已合并,r127 可用)
Controls
- OrbitControls & MapControls
- DeviceOrientationControls (微信、淘宝小程序下 onDeviceMotionChange,安卓下返回数据质量极其低下,基本不可用,社区 bug 反馈 3 年多了,官方无修复意愿)
有小程序 three 需求的同学,欢迎 star 或者 issue,PR 更好了

