Ploy3D是一个基于JavaScript、WebAssembly、WebGPU的国产自研3D引擎。可以在Deno运行时下作为本机应用运行,也可以在支持WebGPU的浏览器环境下运行。当然,在不支持WebGPU的浏览器环境下(如移动端微信),Ploy3D可降级为WebGL2.0运行。
本存储库代码基于MIT协议开源。注意,项目依赖的PLOYCLOUD内核为商业软件,请在同意其有关使用条款的前提下使用。
MacOS : curl -fsSL https://deno.land/install.sh | sh
Linux : curl -fsSL https://deno.land/install.sh | sh
Windows : irm https://deno.land/install.ps1 | iex
MacOS : brew install sdl2
Linux : sudo apt install libsdl2-dev
git clone https://github.com/littledivy/deno_sdl2
tsc --declaration true --emitDeclarationOnly true sdl2.ts
# 1、必要时清除外部依赖缓存(请手动删除Deno缓存目录)
deno info
npm cache clean --force
# 2、输出引擎ES6模块的js文件(输出到./dist/esm/路径)
tsc -p ./
# 3、输出引擎ES6模块的.d.ts文件(输出到./dist/esm/路径)
tsc --declaration true --emitDeclarationOnly true --removeComments false -p ./tsconfig.json
deno run --allow-env --allow-read --allow-write --allow-net --allow-ffi --unstable-ffi --unstable-webgpu --unstable-sloppy-imports ./native.js
笛卡尔坐标系:使用X轴朝右,Y轴朝上,Z轴朝外的右手坐标系(与WebGL,ThreeJS,Filament相同);
相机观察方向:默认状态下相机朝屏幕里观察对象,所以观察向量为相机空间Z-方向。
模型坐标系:与笛卡尔坐标系一样采样右手坐标系(与GLTF相同),左手坐标系模型导入时须转换为右手坐标系;
切线空间:与笛卡尔坐标系一样采样右手坐标系(主流选择);
NDC空间(WebGPU):使用X轴朝右,Y轴朝上,Z轴朝里的左手坐标系。左下角[-1, -1],右上角[1, 1],Z值范围[0, 1]。
NDC空间中,Z值近0远1,Z数值大部分精度范围被用在靠近相机近的部分。翻转Z轴后,Z轴朝外(变成右手坐标系,WebGL);
NDC空间(WebGL):使用X轴朝右,Y轴朝上,Z轴朝外的右手坐标系。左下角[-1, -1],右上角[1, 1],Z值范围[-1, 1]。
引擎所用相机->裁剪变换矩阵,裁剪空间Z值范围[近1, 远0],在WebGL着色器中需要将Z值转换为[近1, 远-1]。
图像空间(WebGPU,视窗画布、帧缓存、视口、纹理采样)Y轴向下,左上角(0, 0),(0, 0)为纹理内存最低地址;
空间下标:世界空间w,观察空间v,裁剪空间c,NDC空间n
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型