推荐:将 NSDT场景编辑器 加入你的3D开发工具链。

NSDT编辑器简化了WebGL 3D应用的开发,完全兼容Three.JS生态。本文介绍如何在自己的应用中嵌入使用NSDT编辑器搭建的3D场景,并通过JS API与场景进行交互。

在自己的应用中嵌入3D场景只需要三个步骤:

  • 在NSDT编辑器中搭建3D场景
  • 在自己的前端应用中加载搭建好的3D场景
  • 使用JavaScript API与3D场景交互

首先前往这里下载NSDT 3D场景JS开发包和演示程序,开发包文档参见这里。

1、搭建3D场景

前往NSDT场景编辑器,拖拽模型快速搭建3D场景,成果如下:

2、加载3D场景

首先在HTML页面中创建一个Canvas元素以便渲染3D场景:

<canvas class="canvas webgl"></canvas>

然后引入开发包:

<script src="./libs/js/three.js"></script>
<script src="./libs/js/nsdt@ted.js"></script>

创建一个NSDT Viewer对象,并调用Viewer的 loadScene() 方法加载指定的场景:

const sceneId = '63a13d2d39c45778ba1bedd0'     //场景ID
const viewer = new DT.Viewer(canvas); //初始化场景查看器
const scene = await viewer.loadScene(sceneId) //加载指定场景

3、与3D场景交互

加载场景后,可以使用JS API与场景中的对象模型交互,比如调整其位置、旋转角度、路径漫游等,也可以接收来自3D场景的事件,例如:

下面以相机漫游为例。

首先调用Viewer的 getRoamingList() 方法获取指定场景的漫游列表,并将漫游路径关键点信息(位置、方向、时长等)存入 points数组:

const res = await viewer.getRoamingList(sceneId)              //获取漫游列表

const points = [];
for (let item of res[0].points) {
points.push({ //保存路径关键点
duration: Number(item.duration) * 1000,
position: new THREE.Vector3().fromArray(item.position),
target: new THREE.Vector3().fromArray(item.target),
});
}

然后利用读取的关键点创建 RoamingPath 对象,并调用其 start() 方法启动:

const roaming = new DT.RoamingPath(viewer, points)
roaming.start();

效果如下:



原文链接:NSDT 3D场景JS API文档

最新文章

  1. 初识sqoop
  2. Android开发之无线遥控器
  3. .NET web开发之WebApi初试水
  4. Web前端开发规范文档
  5. androidService总结
  6. git同步开发更新至项目目录(转载)
  7. HDOJ/HDU 1180 诡异的楼梯(经典BFS-详解)
  8. 长期支持版本(即不自动更新版本) - Flash Player 18.0.0.268
  9. Code(容斥,好题)
  10. etcd raft如何实现成员变更
  11. (2)ES6解构赋值-数组篇
  12. Python基础-变量定义-输出输入
  13. 吾八哥学Selenium(三):操作复选框checkbox/单选框radio的方法
  14. [NOI2005]寿司晚宴
  15. Cookie&amp;Session(会话技术)
  16. 对嵌入式开发C语言结构体的一点总结
  17. 关于Django的配置
  18. SQL 资源整理
  19. HELLO JAVA!
  20. 如何将 gitbook上的开源书转换为mobi

热门文章

  1. 实践案例:同程艺龙网的 Dubbo 升级经验总结
  2. 【PPT】NET Conf China 2022,主题:C#在iNeuOS工业互联网操作系统的开发及应用
  3. MetaTown:一个可以自己构建数字资产的平台
  4. python基础(数据库、可视化软件Navicat、python操作MySQL)
  5. DID 2022-12-02
  6. [python] tensorflow中的argmax()函数argmax()函数
  7. vue多界面开发
  8. Shiro-721反序列化漏洞
  9. 【Machine Teaching】An Overview of Machine Teaching
  10. 如何通过Terraform Associate考试并获得证书