threejs 里面的3d管道的每个节点ID是唯一的,且对应x,y,z坐标.那么当需要从A点到B点的时候,可能出现有多条路径可走,此时便需要求出最短行走路径,因此用到一个寻路径算法.我们将问题简化如下: 后记:事实证明,下面这个算法有点缺陷,哈哈,其实少了一个查找深度,否则路径多的情况下会死掉,chrome dev会报 over max stack ~~ so, 加上一个递归深度就搞定了撒~~ var begId = 191; //起点ID var endId = 185; //终点ID //所…
3D格式你可以通过任意软件导出(.3ds,dae等),但是threejs 无法使用, 1,http://www.blender.org/ 下载这款开源的3d软件 2,https://github.com/mrdoob/three.js/tree/master/utils/exporters/blender 下载threejs 专用格式插件 so...   level up! 如何使用(图文说明): 安装好blender后,我们先将Threejs的插件 “io_three”文件夹拷贝到blener…
今天在写threejs时,突然想到一个问题:一个3D物体需要旋转时,一般情况下简单的旋转我都是使用欧拉角,稍微复杂一些的情况我会把欧拉角转换成四元数进行旋转(欧拉角复杂旋转可能会产生的死锁问题),但是在threejs中object3D的旋转方法无论是使用setRotation(沿着x.y.z轴旋转)还是rotateOnAxis(按从原点到任意方向的向量进行旋转)都无法完成沿着一个不经过原点的轴进行旋转(或者是我没有发现),但是实际应用的情况是存在的,比如一个大箱子,再某种情况下我们需要他沿着y轴…
最近要写个 web 交互式发光可交互的框架.没查到啥好资料,自己一个人摸索了很久,有些失望,可是毕竟是探索过的东西,所以做个记录,怀念我过去好多天掉的青丝(捂脸).我在前面那篇博客里面已经介绍了如何让用户与 3D 场景中的组件交互(其实这个技术应该比较成熟了,只是我自己还不熟),所以这篇呢,主要是介绍一下 THREEJS 中的后期处理通道(ShaderPass)以及特效合成器(effectComposer),因为没看到什么资料介绍 THREEJS 后期处理这块儿的.如果有童鞋有更好的办法或者建议…
前言 大家好,老郑我又回来了.这一期为大家带来一个非常好玩的 demo,我们制作一套自己的 3D 管道控制系统,运用了( http://www.hightopo.com )HT 的 Graph3dView 组件通过对 WebGL 底层技术的封装,与 HT 其他组件一样,基于 HT 统一的 DataModel 数据模型来驱动图形显示. 效果图 此为 2D 主界面: 此为 3D 界面的部分分段演示: 由于 gif 上传有大小限制,所以请大家务必去网页感受和体验,双击进口阀开始. ( 戳我进入!) 代…
在Jerry写这篇文章时,通过Google才知道,SAP其实是有自己的3D模型视图显示解决方案的. 故事要从Right Hemisphere说起,这是一家专业的企业级2D/3D模型浏览及转换的软件供应商.后来,Right Hemisphere被SAP收购,解决方案也更名为SAP Visual Enterprise. 收购之后,SAP推出了一系列和Visual Enterprise Viewer的集成解决方案.以SAP CRM为例,在CRM产品主数据的页面工具栏上新增了一个按钮"Visual En…
搭建本地开发环境 安装nodejs 按照 Create React App 安装指南创建一个新的项目 npx create-react-app react-three-demo 删除掉新项目中 src/ 文件夹下的所有文件.(不要删除整个 src 文件夹,删除里面的源文件.) 安装路由依赖包和threejs依赖包 # tips: 注意版本兼容问题 npm install react-router@5 react-router-dom@5 npm install --save three 按照下面…
最近在做的项目中遇到需要保存当前的3d管道视角设置的问题,用户希望在对3d场景内的管道进行了缩放.旋转.移动之后可以将场景当前的视角状态保存在数据库中,并在下次加载时读取. 经过不断的尝试和研究,在同事的帮助下总算完成,下面说一下注意事项并附上实现代码. 首先,经过测试保存视角取决于两个部分,一个是camera这个超大的js对象,另一个就是右键平移执行的操作在controls中(开发中使用的是TrackballControls.js). 先来说camera这个对象参数非常多,详细参数不再做说明,…
注:文中VS代指顶点着色器,FS代指片段着色器. 准备知识 这个教程和大家展示3d管道中非常重要的部分,即Interpolation(插值).光栅化程序执行的插值变量由VS产生.正如你已经见到过的,为了在屏幕中显示一些有意义的东西,你需要在vertex shader中指定一个输出变量'gl_Position'.它是一个包含顶点坐标的有4个分量的向量.x/y/z分量会和w分量做除法运算,任何分量超出规范化正方形([-1,1])的部分将会被裁剪.这些值会被转换成屏幕空间坐标系,接着三角形(或者其他指…
CSharpGL(56)[译]Vulkan入门 本文是对(http://ogldev.atspace.co.uk/www/tutorial50/tutorial50.html)的翻译,作为学习Vulkan的一次尝试. 不翻译的话,每次都在看第一句,那就学不完了. Background 背景 You've probably heard by now quite a bit about Vulkan, the new Graphics API from Khronos (the non profit…