自研 3D 引擎,一行 script 标签引入,零 CDN 依赖。57+ 几何体、9 材质、6 灯光、CSM+PCSS 阴影、骨骼动画、GPU 粒子、GLTF 加载、WebXR VR/AR、KTX2 纹理、内置物理引擎。
在你的 HTML 页面中加入一行 <script> 标签即可。引擎由 ShowH5 服务直接托管,不依赖任何第三方 CDN。
<!-- 直接引用 /3d 路径,浏览器自动获得 JS -->
<script src="https://h5.xcmdy.top/3d"></script>
<script>
// 引擎挂载到全局 window.SH5_3D
var S = SH5_3D;
console.log('Show3D 版本:', S.version); // 4.0.0
</script>
<!-- 使用显式文件名(等价于 /3d)-->
<script src="https://h5.xcmdy.top/3d/show3d.js"></script>
<!-- 或 -->
<script src="https://h5.xcmdy.top/3d/show3d.min.js"></script>
// 通过 fetch + new Function 动态加载(跨域已开启 CORS)
const res = await fetch('https://h5.xcmdy.top/3d?raw=1');
const code = await res.text();
new Function(code)();
const S = window.SH5_3D;
<canvas id="c" width="600" height="400"></canvas>
<script src="https://h5.xcmdy.top/3d"></script>
<script>
var S = SH5_3D;
var canvas = document.getElementById('c');
var renderer = S.createRenderer(canvas); // 自动选 WebGL / CPU 软渲染
var cam = { x:0, y:2, z:5, tx:0, ty:0, tz:0, fov:60 };
var lights = [
{ type:'directional', x:5, y:10, z:5, color:'#ffffff', intensity:0.8 },
{ type:'ambient', color:'#404040', intensity:0.4 }
];
var objects = [
{ id:'cube1', type:'cube', x:0, y:0, z:0, scale:1, size:1,
color:'#ff4444', material:'standard', metalness:0.5, roughness:0.5,
castShadow:true, receiveShadow:true }
];
renderer.render(objects, cam, lights, {});
</script>
引擎挂载到全局 window.SH5_3D(简写 S)。以下为核心模块,完整 API 可通过 /3d/api 程序化查询。
数学库:4x4 矩阵、三维向量、四元数、几何工具。
创建几何体,返回 {vertices, normals, uvs, indices}。
创建材质。
创建灯光。
创建渲染器,自动选择 WebGL GPU 或 CPU 软渲染(无 WebGL 时回退)。
后处理合成器,12+ 特效可叠加。
完整的骨骼蒙皮动画系统。
GPU 粒子系统,支持发射器、生命周期、速度、大小、颜色。
支持 4 种主流格式,二进制 + ASCII。
WebXR VR/AR 管理,支持 immersive-vr / immersive-ar 会话与手柄追踪。
KTX2 / Basis 超纹理压缩加载,GPU 解码,显存占用降低 75%。
内置物理引擎(Cannon.js 风格),刚体、约束、碰撞检测。
renderer.render(objects, cam, lights, opts) 的 objects 数组中每个对象支持以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 对象唯一标识 |
type | string | 几何体类型(cube/sphere/...,共 57 种) |
x/y/z | number | 世界坐标位置 |
rx/ry/rz | number | 欧拉旋转(弧度) |
scale | number | 统一缩放 |
size | number | 几何体尺寸(半径/边长等) |
color | string | 基础颜色(#rrggbb) |
material | string | 材质类型(standard/physical/phong/toon/...) |
metalness | number | PBR 金属度(0-1) |
roughness | number | PBR 粗糙度(0-1) |
opacity | number | 不透明度(0-1,小于 1 时透明) |
texture | string | 纹理图片 URL |
castShadow | boolean | 是否投射阴影 |
receiveShadow | boolean | 是否接收阴影 |
| 路径 | 返回 | 用途 |
|---|---|---|
/3d | JS(script 引用)/ HTML(浏览器直接访问) | 主入口,外部应用引用此路径 |
/3d/show3d.js | JS | 显式文件名 |
/3d/show3d.min.js | JS | 显式压缩版文件名(同上) |
/show3d.js | JS | 根路径别名 |
/3d?raw=1 | JS | 强制返回 JS(不跳转文档页) |
/3d/docs | HTML | 本文档页 |
/3d/api | JSON | 程序化 API 概览查询 |
Cache-Control: public, max-age=3600, immutable 和 CORS 头,可被任意域名跨域引用。升级版本后如需立即生效,加版本号查询参数:/3d?v=4.0.1。