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/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场景的更多相关文章
- OSG 3D场景渲染编程概述
OSG是Open Scene Graphic的缩写,是基于C++平台的使用OpenGL技术的开源3D场景开发. vs环境安装或者是在Ubuntu中环境的安装网上教程很多,都是大同小异的,认真操作容易成 ...
- [Unity3D]Unity3D游戏开发之在3D场景中选择物体并显示轮廓效果
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 在<仙剑奇侠传>.<古剑奇谭>等游戏中,常常须要玩家在一个3D场景中 ...
- WebGL学习(2) - 3D场景
原文地址:WebGL学习(2) - 3D场景 经过前面WebGL学习(1) - 三角形的学习,我们已经掌握了webGL的基础知识,也已经能够画出最基本的图形,比如点,线,三角形,矩形等.有了2D绘图的 ...
- Python>>>创建一个简单的3D场景
首先安装PyOpengl pip install PyOpenGL PyOpenGL_accelerate
- UI和3D场景同时都需要响应触摸事件
比如战斗场景,UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分.为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上. 以前NGUI的时候都是自己 ...
- Seen.js – 使用 SVG 或者 Canvas 渲染 3D 场景
Seen.js 渲染3D场景为 SVG 或者 HTML5 画布.Seen.js 包含对于 SVG 和 HTML5 Canvas 元素的图形功能的最简单的抽象.所有这个库的其它组件都是不用关心将要渲染的 ...
- Ngui 五种点击事件实现方式及在3d场景中点透的情况
http://www.unity蛮牛.com/thread-22018-1-1.html ngui作为unity界面插件之一中,无疑是最好用,使用最多的了从自学unity到现在界面一直使用它 由于它的 ...
- css3创建3D场景
浏览器本身是一个2维平面,对于3D的情况,实际上是增加了一个维度(深度),所以我们需要创建一个3D场景.这时浏览器不仅仅是一个平面了,更像是一个窗口,我们透过这个窗口去观察里面的三维世界.所谓的创建3 ...
- 第一章 用three.js创建你的第一个3D场景
第一章 用three.js创建你的第一个3D场景 到官网下载three.js的源码和示例. 创建HTML框架界面 第一个示例的代码如下: 01-basic-skeleton.html 位于 Learn ...
- Unity 弹出界面时屏蔽对3D场景的点击
注:这里的UI制作用的是NGUI插件 如题,在游戏中经常会遇到这种情况,场景中点击相关物体或者按钮弹出对应的2D界面,这时候除了2D界面上的可点击按钮等,应该屏蔽掉对3D场景的点击或者拖动事件. 在这 ...
随机推荐
- angr原理与实践(三)——Arbiter:一种弥合二进制程序漏洞发现中的静态和动态鸿沟
转载请说明出处:信安科研人 please subscribe my official wechat :信安科研人 获取更多安全资讯 原文链接:sec22-vadayath.pdf (usenix. ...
- java中对象存在形式
本文主要讲述jvm中对象的存储形式: class Cat{ String name; int age; String color; // 行为 } 依据Cat类创建对象 public class Ob ...
- 脚本运行正常,但抛出警告ResourceWarning: unclosed <socket.socket fd=688, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 61803)
脚本运行正常,但抛出警告,如下图,此时可导入warnings,忽略警告.
- Django框架:10、Ajax补充说明、多对多三种创建方法、Django内置序列化组件、批量操作数据方法、分页器思路、form组件
Django框架 目录 Django框架 一.Ajax补充说明 1.针对前端回调函数接受值的说明 二.多对多三种创建方式 1.自动创建 2.纯手动创建 3.半自动创建 三.Django内置序列化组件 ...
- [常用工具] Python视频处理库VidGear使用指北
VidGear是一个高性能的Python视频处理库,它在预载多个专业视频图像处理库的基础上,如OpenCV.FFmpeg.ZeroMQ.picamera.starlette.yt_dlp.pyscre ...
- MongoDB6.0的安装「2023年」
你好,我是悦创. 优质原文格式:https://bornforthis.cn/column/crawler/supplement/mongodb-install.html 点进去有惊喜. 吐槽,这篇博 ...
- 就dispatch_source_t写的计时器
直接上干货,我这里用的是Xcode12.4,macOS:11.2.3 OC版本: swift版本:
- App几个可能造成内存泄漏的情况:
App几个可能造成内存泄漏的情况: 1.block块中直接用self调用,self将会被block copy到内部增加一次饮用计数,形成循环引用 在block里调用self会不会造成循环引用和这个bl ...
- LIS求解(包括优化)
首先,让我来看看LIS问题 Description 一个数的序列 bi,当 b1 < b2 < ... < bS 的时候,我们称这个序列是上升的.对于给定的一个序列(a1,a2,.. ...
- 一类(One-Class)分类器
本文摘自博客和论文,参考文献请看文末. 一类分类技术概念 与传统的分类技术不同,一类分类技术仅采用隶属于一个类别的样本来训练分类器,其通常被用于某种极端场景,即训练样本仅包含正常样本,而异常样本不可得 ...

