推荐:将 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文档

NSDT可编程3D场景的更多相关文章

  1. OSG 3D场景渲染编程概述

    OSG是Open Scene Graphic的缩写,是基于C++平台的使用OpenGL技术的开源3D场景开发. vs环境安装或者是在Ubuntu中环境的安装网上教程很多,都是大同小异的,认真操作容易成 ...

  2. [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中 ...

  3. WebGL学习(2) - 3D场景

    原文地址:WebGL学习(2) - 3D场景 经过前面WebGL学习(1) - 三角形的学习,我们已经掌握了webGL的基础知识,也已经能够画出最基本的图形,比如点,线,三角形,矩形等.有了2D绘图的 ...

  4. Python>>>创建一个简单的3D场景

    首先安装PyOpengl pip install PyOpenGL PyOpenGL_accelerate

  5. UI和3D场景同时都需要响应触摸事件

    比如战斗场景,UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分.为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上. 以前NGUI的时候都是自己 ...

  6. Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景

    Seen.js 渲染3D场景为 SVG 或者 HTML5 画布.Seen.js 包含对于 SVG 和 HTML5 Canvas 元素的图形功能的最简单的抽象.所有这个库的其它组件都是不用关心将要渲染的 ...

  7. Ngui 五种点击事件实现方式及在3d场景中点透的情况

    http://www.unity蛮牛.com/thread-22018-1-1.html ngui作为unity界面插件之一中,无疑是最好用,使用最多的了从自学unity到现在界面一直使用它 由于它的 ...

  8. css3创建3D场景

    浏览器本身是一个2维平面,对于3D的情况,实际上是增加了一个维度(深度),所以我们需要创建一个3D场景.这时浏览器不仅仅是一个平面了,更像是一个窗口,我们透过这个窗口去观察里面的三维世界.所谓的创建3 ...

  9. 第一章 用three.js创建你的第一个3D场景

    第一章 用three.js创建你的第一个3D场景 到官网下载three.js的源码和示例. 创建HTML框架界面 第一个示例的代码如下: 01-basic-skeleton.html 位于 Learn ...

  10. Unity 弹出界面时屏蔽对3D场景的点击

    注:这里的UI制作用的是NGUI插件 如题,在游戏中经常会遇到这种情况,场景中点击相关物体或者按钮弹出对应的2D界面,这时候除了2D界面上的可点击按钮等,应该屏蔽掉对3D场景的点击或者拖动事件. 在这 ...

随机推荐

  1. vba + ado +sql 连接数据库的常用操作方式

    vba + ado +sql 连接Access.MySQL.Oracle Private Sub Connection_DBA() '********************************* ...

  2. 我做了第一个ChatGPT .net api聊天库

    最近这个ChatGPT很火啊,看了B站上很多视频,自己非常手痒,高低自己得整一个啊,但是让我很难受的是,翻遍了github前十页,竟然没有一个C#的ChatGPT项目,我好难受啊!那能怎么办?自己搞一 ...

  3. Jmeter 函数助手之__time

    接口中需要传入time时,可使用Jmeter 函数助手中的__time函数传入当前时间 格式和参数名称两个字段非必填,当都不填时直接点击生成按钮,得到13位时间戳:按图填写后,得到10位时间戳,获取当 ...

  4. Redis的数据复制

    介绍 Redis 的复制 Redis 的复制功能分为同步(sync)和命令传播(command propagate)这两个操作 同步操作用于,将从服务器的数据库状态更新至主服务器当前所处的数据库状态: ...

  5. ob_DES_艺恩

    网站 aHR0cHM6Ly93d3cuZW5kYXRhLmNvbS5jbi9Cb3hPZmZpY2UvQk8vWWVhci9pbmRleC5odG1s 抓包返回密文  点到initator,PostA ...

  6. python安装过程

    1.在官网下载,点击进入安装包. 2.把Add勾上,会自动配置环境变量. 3,这些是要下载的东西,要全部勾上. 4.这里特别注意路径,把路径改成自己想放的盘里面. 5.配置环境变量,在此电脑搜索 编辑 ...

  7. Netty-架构设计及入门程序-3

    一.原生 NIO 存在的问题 1.NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector.ServerSocketChannel.SocketChannel.ByteBuffer等. ...

  8. AcWing第85场周赛

    这场周赛是手速局hh 死或生 某国正在以投票的方式决定 2 名死刑犯(编号 1∼2)的生死. 共有 n 组人员(编号 1∼n)参与投票,每组 10 人. 每组成员只参与一名死刑犯的投票,其中第 i 组 ...

  9. NW js 打包入门教程

    NW js 打包入门教程 NW.JS的安装与打包_u013288292的博客-CSDN博客_nwjs打包

  10. HttpServletRequest获取参数和文件

    从HttpServletRequest中获取上传文件及参数的方法 try { //下面这句必须加,不然报错 MultipartResolver resolver = new CommonsMultip ...