首页 > 编程语言 >NSDT可编程3D场景

NSDT可编程3D场景

时间:2023-02-18 23:45:47浏览次数:46  
标签:场景 const JS points 可编程 NSDT 3D

推荐:将 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/[email protected]"></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文档

标签:场景,const,JS,points,可编程,NSDT,3D
From: https://www.cnblogs.com/mvrlink/p/17133974.html

相关文章

  • [CF983D]Arkady and Rectangles
    \(\text{Solution}\)二维平面很容易想到扫描线,然后不知道维护什么信息颜色的变化自然要能记录下来,所以线段树每个结点维护一个set表示覆盖这个点代表区间的所有颜色这......
  • 万字长文概述单目3D目标检测算法
    一,理论基础-相机与图像1.1,单目相机介绍1.2,针孔相机模型1.3,坐标系间的欧式变换1.4,世界坐标与像素坐标的转换1.5,三维旋转:欧拉角、旋转矩阵之间的转换二,单目3D目标......
  • 单目3D目标检测综述
    一,理论基础-相机与图像相机将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素)的过程能够用一个几何模型进行描述,这个模型有很多种,其中最简单的称为针孔相机模型。......
  • 3D目标检测 | BEVDet系列源码解读
    前言本文介绍了BEVDet实现过程中的代码注释,希望能帮助大家更好地理解如何从论文原理到mmdet3d上代码实现BEVDet。 本文转载自自动驾驶之心作者丨小书童 欢......
  • 【Unity 3D游戏开发】在Unity使用NoSQL数据库方法介绍
    随着游戏体积和功能的不断叠加,游戏中的数据也变得越来越庞杂,这其中既包括玩家产生的游戏存档等数据,例如关卡数、金币等,也包括游戏配置数据,例如每一关的配置情况。尽管Unity......
  • nginx禁用3DES和DES弱加密算法,保证SSL证书安全 SSL/TLS协议信息泄露漏洞(CVE-2016-218
     cp-rnginx-1.19.2./nginx-1.19.2.bak查看完旧版本信息可以执行如下命令,给旧版本改个名mv./nginx./nginx.old漏洞名称SSL/TLS协议信息泄露漏洞(CVE-2016-2183)......
  • 汽车和消费应用10M50DAF484I6G FPGA现场可编程门阵列 参数
    MAX10器件是单芯片、非易失性低成本可编程逻辑器件(pld),用于集成最优的系统组件集。10M50DAF484I6G产品种类: FPGA-现场可编程门阵列 系列:MAX1010M50引脚数:484明佳......
  • 开源项目推荐:3D点云处理软件CloudCompare,
    3Dpointcloudandmeshprocessingsoftware,OpenSourceProject,BasedonQt5.CloudCompare是一款基于GPL开源协议的3D点云处理软件,可以在Windows、MacOS和Linux上运......
  • 3d按钮实现
    以上的效果都来自于css3废话不多说,代码如下点击查看代码div{width:100px;height:40px;background-color:#1a5bd4;position:absolute;......
  • 3D模型在线查看工具
    3D场景工具推荐:NSDT场景编辑器。glTFViewer2.0是一个可以在线查看GLTF格式3D模型的,可以对模型进行显示设置、灯光设置来查看模型效果,除此之外还可以对模型进行性能分析......