推荐:将 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. Ubuntu20.04创建快捷方式(CLion)

    打开命令行,创建在桌面上xxx.desktop文件 touch ~/Desktop/Clion.desktop 编辑desktop文件 [Desktop Entry] Encoding=UTF-8 N ...

  2. mysql基础问题三问(底层逻辑;正在执行;日志观察)

    背景:经常面试会遇到且实际工作中也会应用到的三个场景: 目录: 一.mysql查询时的底层原理是什么? 二.如何查看正在执行的mysql语句? 三.如何观察mysql运行过程中的日志信息? - - - ...

  3. Redis Zset实现统计模块

    1. 背景 公司有一个配置中心系统,使用MySQL存储了大量的配置,但现在不清楚哪些配置正在线上使用,哪些已经废弃了,所以需要实现一个统计模块,实现以下两个功能: 查看总体配置的数量以及活跃的数量 查 ...

  4. Jvm上如何运行其他语言?JSR223规范最详细讲解

    一 在Java的平台里,其实是可以执行其他的语言的.包括且不仅限于jvm发展出来的语言. 有的同学可能会说,在java项目里执行其他语言,这不吃饱了撑着么,java体系那么庞大,各种工具一应俱全,放着 ...

  5. Jmeter 之跨线程传参

    其他线程使用某个线程中提取的值,比如场景:客户端一直与服务端保持连接的同时进行其他业务操作 1.建立以下两个线程组,并添加相应业务接口 2.发送心跳时,需要token,在用户登录接口下添加提取器提取t ...

  6. axios 中get 和post传参

    axios中get和ppost传参的方式: params是添加到url的请求字符串中的,一般用于get请求. data是添加到请求体(body)中的, 一般用于post请求. 上面,只是一般情况. 其 ...

  7. 【转】C#接口知识

    参考:日常收集 C# 接口知识 (知识全面) 目录 第一节 接口慨述 第二节 定义接口 第三节 定义接口成员 第四节.访问接口 第五节.实现接口 第六节.接口转换 第七节.覆盖虚接口 第一节 接口慨述 ...

  8. vue/cli子组件style中如何使用全局图片路径

  9. c++ 跑酷小游戏之用户体验plus

    #undef UNICODE#undef _UNICODE#include <iostream>#include <iomanip>#include <string> ...

  10. 鸿蒙系统应用开发之基于API6的蓝牙开发

    写在前面 由题意得,我今天讲的是基于鸿蒙系统的兼容JS的类Web开发范式的软件应用开发之蓝牙开发,它是基于API6的,至于为什么是基于API6,请你花几分钟看一下我之前写的这个系列教程的第四篇&quo ...