L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Design et création · SKILL.md

astral3d

astral3d

Use when building industrial 3D visualization and editing applications — large model rendering, STEP/B-Rep viewing, measurement, markup. Astral3D: industrial 3D visualization and editing framework.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: astral3d description: "Use when building industrial 3D visualization and editing applications — large model rendering, STEP/B-Rep viewing, measurement, markup. Astral3D: industrial 3D visualization and editing framework." tags:

  • web
  • 3d
  • visualization
  • threejs
  • digital-twin
  • gltf
  • step

项目地址: https://github.com/mlt131220/Astral3D(Vue3 + THREE.JS 的 WebGL 3D 引擎,npm 包名 astral3d)

演示: https://3d.astraljs.com/

许可证: Apache-2.0

概述

Astral3D 主要特性:

  • 基于 Three.js(Vue 3 生态) 的高层封装
  • 场景编辑器:可视化拖拽、属性面板、节点树
  • 资产管理:模型库、材质库、HDR 环境
  • 动画与状态机:物体动画、相机路径、时间轴
  • 交互:射线拾取、点击、悬浮、UI 弹窗
  • 数据接入:MQTT、WebSocket 实时推送
  • 导出:JSON 场景、glTF、嵌入 SDK

不同发行版(开源版 / 商业版 / 企业版)功能差异较大,本 SKILL 聚焦开源版与通用 SDK 用法。


安装

# Web SDK(npm)
# 编辑器(如有桌面版):从官网下载

CDN:

<script src="https://cdn.jsdelivr.net/npm/astral3d/dist/astral3d.umd.js"></script>

入门:嵌入页面

<div id="scene" style="width:100%;height:100vh"></div>
<script type="module">
  import { Viewer } from 'astral3d';

  const viewer = new Viewer({
    container: document.getElementById('scene'),
    scene: '/scenes/factory.json',     // 由编辑器导出
    background: 'env/sky.hdr'
  });

  await viewer.load();

  // 监听点击事件
  viewer.on('pick', (obj) => console.log('clicked', obj.name));
</script>

场景模型

概念说明
Scene场景容器(场景树、灯光、相机)
Asset资源(模型、纹理、HDR)
Entity场景节点
Component实体组件(Transform、Mesh、Light、Animator、Script)
Plugin编辑器/运行时插件

加载模型

import { ModelLoader } from 'astral3d';

const car = await ModelLoader.load('/models/car.glb');
viewer.scene.add(car);

// 设置位置 / 旋转
car.position.set(10, 0, 0);
car.rotation.y = Math.PI / 4;

支持格式:glTF/GLB(首选)、OBJ、FBX、STL、IFC、STEP(通过 OCCT.js)。


场景编辑器

Astral3D 通常配套桌面/Web 编辑器:

  1. 新建场景 → 选模板(空 / 工业园区 / 数据中心)
  2. 拖入模型库资产
  3. 编辑材质、灯光、HDR
  4. 设置交互(点击事件、动画轨道)
  5. 导出 .json 场景文件 → 由 Viewer 加载

数据驱动(IoT 实时)

import { MqttBridge } from 'astral3d';

const bridge = new MqttBridge('wss://broker:8083/mqtt');
bridge.subscribe('factory/device/+/temp', (topic, payload) => {
    const id = topic.split('/')[2];
    const dev = viewer.scene.findById(id);
    dev.userData.temp = +payload;
    dev.material.color.setHSL(0.6 - payload/100, 1, 0.5);
});

或 WebSocket:

const ws = new WebSocket('wss://server/iot');
ws.onmessage = ({ data }) => {
    const { id, status } = JSON.parse(data);
    viewer.scene.findById(id).visible = status === 'on';
};

交互与拾取

viewer.on('hover', (e) => {
    const obj = e.intersect?.object;
    if (obj) viewer.outline(obj);
});

viewer.on('pick', (e) => {
    const obj = e.intersect?.object;
    viewer.popup({
        target: obj,
        html: `<div class="card">${obj.name} 状态:${obj.userData.status}</div>`
    });
});

相机控制与漫游

viewer.camera.flyTo({
    position: [50, 30, 80],
    target:   [0, 0, 0],
    duration: 2000
});

viewer.camera.firstPerson(true);     // 第一人称漫游
viewer.camera.followPath('path1');   // 路径漫游

动画

const animator = viewer.scene.findById('door').getComponent('Animator');
animator.play('open');         // 编辑器内定义的动画片段

// 时间轴 API
viewer.timeline
   .add('door.position.x', { from: 0, to: 5, duration: 1000 })
   .add('door.rotation.y', { to: Math.PI/2, duration: 1500 })
   .play();

典型工作流

工作流一:IoT 数字孪生场景搭建

  1. 使用 Astral3D 编辑器新建场景,拖入厂房模型(glTF),布置灯光与 HDR 背景
  2. 为设备节点命名(如 sensor_A1),配置交互弹窗模板
  3. 导出 factory.json 场景文件
  4. 在前端页面实例化 Viewer,加载场景文件
  5. 通过 MqttBridge 连接 MQTT Broker,订阅设备遥测主题
  6. 在回调中根据设备 ID 更新对应节点的颜色/透明度/标签

工作流二:Web 端轻量化 CAD 预览

  1. 从服务端获取 STEP/IFC 文件 URL
  2. 使用 ModelLoader.load() 加载模型(底层调用 OCCT.js 解析)
  3. 将模型加入场景,调整位置、缩放
  4. 添加 OrbitControls 供用户旋转/缩放查看
  5. 可选:添加剖面裁剪(clipping plane)查看内部结构

性能优化

  1. glTF Draco 压缩 + KTX2 纹理 减小加载体积
  2. 静态合批:场景导出时启用 mergeStatic
  3. LOD:编辑器为模型生成 3 级 LOD
  4. 物理光照贴图:烘焙到资产中
  5. Frustum culling + occlusion culling 默认开启
  6. Worker 解码:DRACO/KTX2/FBX 使用独立 Worker
  7. PBR 关闭高反射时改 unlit 材质

常见问题

问题解决
模型加载失败检查 CORS;统一用 glTF 2.0
中文按钮乱码字体子集中包含 CJK
实时推送延迟MQTT QoS 0;服务器 → 浏览器 WebSocket 直连
移动端发热关闭实时阴影、降低分辨率 viewer.setPixelRatio(1)
相机穿透启用碰撞或限制 minDistance

AI 使用建议

  • 推荐工作流模式:AI 助手应优先使用编辑器导出的 .json 场景文件作为基础,再通过 API 动态注入数据和交互——避免在代码中手动构造复杂场景树。
  • 关键注意事项:① MQTT/WebSocket 连接需处理断线重连;② 模型路径需确保 CORS 配置正确;③ glTF Draco 压缩后的模型需要 DRACOLoader 支持;④ 移动端需主动降低 pixelRatio 与关闭阴影。
  • 常用代码模式:场景加载 → 数据源接入 → viewer.scene.findById() 定位节点 → 更新节点属性(颜色/位置/可见性)。对于新模型,优先使用 ModelLoader.load() 而非底层 Three.js API。

相关技能


参考资源

如官方文档/仓库地址有调整,请以 znlgis.github.io 中的最新链接为准。

Skills enregistrées