# three-platformize
一个让 THREE 平台化的项目
> 后续维护将会在[platformize](https://github.com/deepkolos/platformize)继续
1. 目前已适配微信,淘宝,字节小程序
2. 支持 tree shaking(需用 webpack,rollup 等构建工具)
3. VSCode types 正常,能正常访问各个类的定义
4. 适配 examples/jsm/\*\*/\*.js,types 正常
5. 可升级、降级版本或使用自定义 THREE
6. 微信小程序 IOS 内存优化,更少切页面导致的崩溃
7. 支持自定义新平台适配,参考 WechatPlatform 编写适配器即可
8. [three-platformize-plugin-wechat](https://github.com/deepkolos/three-platformize-plugin-wechat) 支持微信插件跨插件复用
<h3 align="center">Special Sponsors</h3>
<table>
<tbody>
<tr>
<td align="center" valign="middle">
<a href="https://www.yuntucad.com" target="_blank" align="center">
<img height="45px" alt="云图三维-在线三维CAD设计软件" src="https://upload-images.jianshu.io/upload_images/252050-3b45b9102c4b7a1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"><br>
云图三维-在线三维CAD设计软件
</a>
</td>
<td align="center" valign="middle">
<a href="https://www.oppentech.com/" target="_blank" align="center">
<img height="45px" alt="奥本未来-AR/VR领域先行者" src="https://s3.cn-northwest-1.amazonaws.com.cn/oppenhome/logo_black.png"><br>
奥本未来-AR/VR领域先行者
</a>
</td>
</tr><tr></tr>
</tbody>
</table>
### 适配情况
| | 微信 | 淘宝 | 字节 |
| ------------ | ---- | ---- | ---- |
| 小程序真机 | ✔️ | ✔️ | ✔️ |
| 小程序模拟器 | ✔️ | ✔️ | |
| 小游戏真机 | ✔️ | | |
| 小游戏模拟器 | ✔️ | | |
<br>
> [奥本未来](https://www.oppentech.com/)招聘前端、WebGL、图形学算法,欢迎投简历
## DEMO
> 注:运行 DEMO 时记得开启调试模式,取消域名验证,使用**最新版本**微信开发工具打开
> 具体 Loader 使用方法的 Demo 在这个仓库下[three-platformize-demo](https://github.com/deepkolos/three-platformize-demo)
<table>
<tbody>
<tr>
<th>
<a href="https://github.com/deepkolos/three-platformize-demo-wechat"
>微信小程序 DEMO</a
><br /><a
href="https://github.com/deepkolos/three-platformize-demo-wechat-simple"
>微信小程序基础版 DEMO</a
><br /><a
href="https://github.com/deepkolos/three-platformize-demo-wechat-game"
>微信小游戏 DEMO</a
>
</th>
<th>
<a href="https://github.com/deepkolos/three-platformize-demo-taobao"
>淘宝小程序 DEMO</a
>
</th>
<th>
<a href="https://github.com/deepkolos/three-platformize-demo-byte"
>字节小程序 DEMO</a
>
</th>
</tr>
<tr>
<td>
<img
src="https://raw.githubusercontent.com/deepkolos/three-platformize-demo-wechat/master/demo.gif"
width="250"
alt=""
/>
<div>
<img
src="https://raw.githubusercontent.com/deepkolos/three-platformize-demo-wechat/master/qrcode.jpg"
width="150"
alt=""
/>
</div>
</td>
<td>
<img
src="https://raw.githubusercontent.com/deepkolos/three-platformize-demo-taobao/master/demo.gif"
width="250"
alt=""
/>
</td>
<td>
<img
src="https://raw.githubusercontent.com/deepkolos/three-platformize-demo-byte/master/demo.gif"
width="250"
alt=""
/>
</td>
</tr>
</tbody>
</table>
### 已测试模块
#### Features
0. VSMShadow (r131以及之前的版本可以, 见[Loop index cannot be compared with non-constant expression](https://techbrood.com/zh/news/webgl/webgl-glsl%E7%A8%8B%E5%BA%8F%E5%87%BA%E9%94%99_-loop-index-cannot-be-compared-with-non-constant-expression.html))
#### Loader
1. GLTFLoader (支持带纹理的 GLB) && (EXT_meshopt_compression 安卓可用 WASM,ios 可用 ASM 版,见 tools) && (KHR_mesh_quantization,小程序可用) [【网格压缩测评】MeshQuan、MeshOpt、Draco ](https://juejin.cn/post/6931954784018628621) (微信 8.0 后 WebAssembly API 已无法使用需要使用 WXWebAssembly, 且只支持包内 wasm, 已新增 meshopt_decoder.wasm.module, [使用见](https://github.com/deepkolos/three-platformize-demo/blob/main/src/MeshOpt.ts#L8))
2. TextureLoader
3. RGBELoader & PMREMGenerator (小程序部分机型可能偶现[生成 envMap 错误](https://juejin.cn/post/6922829073920032775),可用[HDRPrefilter](https://github.com/deepkolos/hdr-prefilter-texture)避免 )
4. SVGLoader
5. OBJLoader
6. EXRLoader (需支持 OES_texture_float_linear 扩展,部分移动端 GPU 不支持)
7. MTLLoader (小程序使用 JPG 纹理即可)
8. DDSLoader (需支持 WEBGL_compressed_texture_s3tc 扩展,移动端 GPU 不支持)
9. LWOLoader (需支持 EXT_blend_minmax 扩展,小程序一半效果绘制出错)
10. FBXLoader
11. BVHLoader
12. ColladaLoader (DOMParser querySelector 未适配)
13. TTFLoader
14. STLLoader
15. PDBLoader
16. TGALoader (改用 DataTextureLoader [PR](https://github.com/mrdoob/three.js/pull/21377) 已合并,r127 可用)
17. VTKLoader
#### Controls
0. OrbitControls & MapControls
1. DeviceOrientationControls (微信、淘宝小程序下 onDeviceMotionChange,安卓下返回数据质量极其低下,基本不可用,社区 bug 反馈 3 年多了,官方无修复意愿)
### 不支持模块
0. ImageBitmapLoader(微信小程序未开放 ImageBitmap)
#### Tools
0. dispose-three(销毁节点
1. flip(截屏需要 flipY
2. screenshot
3. worker-pool.module(暂未适配微信小程序
4. zstddec.worker.module(暂未适配微信小程序
5. zstddec.module(暂未适配微信小程序
6. toEnvMap(用于 hdr prefilter
7. meshopt_decoder.asm.module(微信小程序可用
8. meshopt_decoder.wasm.module(微信小程序可用
#### Extensions
0. GLTFGPUCompressedTexture(BasisTextureLoader 的代替方案) 生成工具通过[gltf-gpu-compressed-texture](https://github.com/deepkolos/gltf-gpu-compressed-texture)获取(暂未适配微信小程序
## 使用
```js
import * as THREE from 'three-platformize';
import WechatPlatform from 'three-platformize/src/WechatPlatform';
const platform = new WechatPlatform(canvas); // webgl canvas
platform.enableDeviceOrientation('game'); // 开启DeviceOrientation
THREE.PLATFORM.set(platform);
// 使用完毕后释放资源
THREE.PLATFORM.dispose();
// 正常使用three即可
// DEMO 代码示例见 https://github.com/deepkolos/three-platformize-demo
// 基础的使用DEMO见 https://github.com/deepkolos/three-platformize-demo-wechat-simple
// 生产环境时rollup.config.js里请开启teser压缩, 即plugins末尾增加 terser({ output: { comments: false } })
```
### 经验
0. 微信小程序不支持 2048 以上的纹理图片
1. 淘宝小程序显示 RGB 格式纹理 (JPG) 有问题,通过 TextureLoader 加载纹理后,把 texture.format 设置为 RGBAFromat 即可(淘宝版本 9.20.0),原因可能是服务端对图片大图片优化,把图片压缩导致格式改变 RGB 变 RGBA
2. r126 不能设置全 pixelRatio,可以设置为一半,或者 2,不能是 3
3. 虽然支持加载 GLB,但图片是使用 js 版的 ArrayBuffer 转 base64,耗时且占用内存,虽可用 wasm 的 encoder 缓解 (https://github.com/marcosc90/encoding-wasm),但wasm对字符串处理性能不如js,用AssemblyScript编译的wasm测试
4. IOS 前后进入退出页面崩可以降低 pixelRatio 缓解
5. IOS 微信 readPixels 不支持抗锯齿,如果直接 canvas 的 buffer 需要关闭抗锯齿(antialias: false), 另一种方式是 WebglRenderTarget,同时也可以开启抗锯齿,但是纹理大小�
没有合适的资源?快使用搜索试试~ 我知道了~
一个让 THREE 平台化的项目,目前已适配微信,淘宝,头条小程序,微信小游戏.zip
共1108个文件
js:555个
ts:362个
bin:128个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 42 浏览量
2024-02-21
21:14:44
上传
评论
收藏 122.84MB ZIP 举报
温馨提示
一个精致的微信小程序源码,简单易用,易于学习交流和部署;有问题可以私信博主
资源推荐
资源详情
资源评论
收起资源包目录
一个让 THREE 平台化的项目,目前已适配微信,淘宝,头条小程序,微信小游戏.zip (1108个子文件)
image1.astc.bin 5.33MB
image2.bc7.bin 5.33MB
image2.astc.bin 5.33MB
image3.astc.bin 5.33MB
image0.astc.bin 5.33MB
image0.bc7.bin 5.33MB
image3.bc7.bin 5.33MB
image1.bc7.bin 5.33MB
image1.astc.bin 3.08MB
image1.bc7.bin 2.96MB
image2.pvrtc.bin 2.67MB
image0.pvrtc.bin 2.67MB
image1.pvrtc.bin 2.67MB
image3.pvrtc.bin 2.67MB
image1.dxt.bin 2.67MB
image1.etc1.bin 2.67MB
image2.etc1.bin 2.67MB
image3.etc1.bin 2.67MB
image2.dxt.bin 2.67MB
image3.dxt.bin 2.67MB
image0.dxt.bin 2.67MB
image0.etc1.bin 2.67MB
image1.astc.bin 2.3MB
image1.bc7.bin 2.21MB
image0.bc7.bin 1.75MB
image0.astc.bin 1.71MB
lanse_banzi-1.bc7.bin 1.33MB
lvse_banzi-1.bc7.bin 1.33MB
lvse_banzi-1.astc.bin 1.33MB
lanse_banzi-1.astc.bin 1.33MB
image0.bc7.bin 1.33MB
image2.bc7.bin 1.33MB
image1.dxt.bin 1.32MB
image0.astc.bin 1.3MB
image2.astc.bin 1.28MB
image1.pvrtc.bin 1.04MB
image2.bc7.bin 1.02MB
image1.dxt.bin 1.01MB
image2.astc.bin 999KB
image1.etc1.bin 891KB
image1.pvrtc.bin 809KB
image0.dxt.bin 741KB
image1.etc1.bin 688KB
lvse_banzi-1.pvrtc.bin 683KB
lanse_banzi-1.pvrtc.bin 683KB
lvse_banzi-1.dxt.bin 683KB
lanse_banzi-1.dxt.bin 683KB
lanse_banzi-1.etc1.bin 683KB
lvse_banzi-1.etc1.bin 683KB
image0.dxt.bin 577KB
lvse_banzi-1.bc7.bin 532KB
lvse_banzi-1.astc.bin 524KB
image2.dxt.bin 521KB
lanse_banzi-1.bc7.bin 505KB
lanse_banzi-1.astc.bin 500KB
image0.pvrtc.bin 449KB
image2.dxt.bin 414KB
lvse_banzi-1.bc7.bin 396KB
lvse_banzi-1.astc.bin 390KB
image2.pvrtc.bin 383KB
lanse_banzi-1.bc7.bin 377KB
lanse_banzi-1.astc.bin 373KB
image0.pvrtc.bin 344KB
FINDI_TOUMING01_Basecoler.bc7.bin 341KB
FINDI_TOUMING01_Basecoler.dxt.bin 341KB
FINDI_TOUMING01_Basecoler.astc.bin 341KB
FINDI_TOUMING01_nomarl1.bc7.bin 341KB
FINDI_TOUMING01_nomarl1.astc.bin 341KB
image0.etc1.bin 313KB
image2.pvrtc.bin 284KB
lvse_banzi-1.dxt.bin 233KB
lvse_banzi-1.etc1.bin 230KB
image0.etc1.bin 228KB
lanse_banzi-1.dxt.bin 222KB
image2.etc1.bin 213KB
lanse_banzi-1.etc1.bin 206KB
buffer.bin 203KB
BoomBox.bin 203KB
buffer.bin 203KB
buffer.bin 203KB
lvse_banzi-1.pvrtc.bin 202KB
lanse_banzi-1.pvrtc.bin 188KB
lvse_banzi-1.etc1.bin 180KB
lvse_banzi-1.dxt.bin 177KB
FINDI_TOUMING01_Basecoler.pvrtc.bin 171KB
FINDI_TOUMING01_nomarl1.pvrtc.bin 171KB
FINDI_TOUMING01_Basecoler.etc1.bin 171KB
FINDI_TOUMING01_nomarl1.etc1.bin 171KB
FINDI_TOUMING01_nomarl1.dxt.bin 171KB
lanse_banzi-1.dxt.bin 169KB
lanse_banzi-1.etc1.bin 162KB
lvse_banzi-1.pvrtc.bin 156KB
image2.etc1.bin 156KB
lanse_banzi-1.pvrtc.bin 145KB
Fendi_banzi.bin 87KB
Fendi_banzi-004667.bin 87KB
Fendi_banzi.bin 87KB
Fendi_banzi.bin 87KB
image3.bc7.bin 49KB
image3.astc.bin 48KB
共 1108 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12
资源评论
极致人生-010
- 粉丝: 3338
- 资源: 3076
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 单家独院式别墅图纸D027-三层-12.80&10.50米-施工图.dwg
- 计算机视觉(Computer Vision, CV)图像处理是指使用计算机算法来分析和解释图像数据
- 儿童节,又称国际儿童节
- 单家独院式D026-三层-11.80&09.60米- 效果图.dwg
- 基于TypeScript和Vue的开源轻量级BI系统前端设计源码
- 三层别墅图纸编号D025-三层-12.24&14.34米-施工图.dwg
- 3层独栋别墅编号D113-三层-08.64&11.60米-建施图.dwg
- 三层别墅图纸编号D023-三层-14.40&20.7米- 效果图.dwg
- 笔记本显卡RTX 4060 GPU 驱动程序
- 基于Go的个性化O'RLY动物书封面生成器设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功