简介

VTK是由Visualization Toolkit创建的一种格式,用来指定顶点和面。VTK有两种格式:二进制和基于文本的ASCIIThree.js只支持基于ASCII的格式。

实现案例

案例查看地址:http://www.wjceo.com/blog/threejs/2018-03-20/132.html

  • 首先,引入script加载器
<script src="/lib/js/loaders/VTKLoader.js"></script>
  • 然后,实例化加载器对象,然后加载模型,VTK模型里面只保存了几何体,所以我们实例化了一个纹理,添加到场景当中。
var loader = new THREE.VTKLoader();
loader.load("/lib/assets/models/moai_fixed.vtk", function (geometry) {//模型的法向量有问题,更新一下法向量geometry.computeFaceNormals();geometry.computeVertexNormals();//创建纹理var mat = new THREE.MeshLambertMaterial({color: 0xaaaaaa});//创建模型var group = new THREE.Mesh(geometry, mat);group.scale.set(10, 10, 10);scene.add(group);
});

案例代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">html, body {margin: 0;height: 100%;}canvas {display: block;}</style>
</head>
<body onload="draw();"></body>
<script src="/lib/three.js"></script>
<script src="/lib/js/loaders/VTKLoader.js"></script>
<script src="/lib/js/controls/OrbitControls.js"></script>
<script src="/lib/js/libs/stats.min.js"></script>
<script src="/lib/js/libs/dat.gui.min.js"></script><script>var renderer;function initRender() {renderer = new THREE.WebGLRenderer({antialias:true});renderer.setSize(window.innerWidth, window.innerHeight);//告诉渲染器需要阴影效果renderer.setClearColor(0xffffff);document.body.appendChild(renderer.domElement);}var camera;function initCamera() {camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 0.1, 1000);camera.position.set(0, 40, 50);camera.lookAt(new THREE.Vector3(0,0,0));}var scene;function initScene() {scene = new THREE.Scene();}//初始化dat.GUI简化试验流程var gui;function initGui() {//声明一个保存需求修改的相关数据的对象gui = {};var datGui = new dat.GUI();//将设置属性添加到gui当中,gui.add(对象,属性,最小值,最大值)}var light;function initLight() {scene.add(new THREE.AmbientLight(0x444444));light = new THREE.PointLight(0xffffff);light.position.set(0,50,50);//告诉平行光需要开启阴影投射light.castShadow = true;scene.add(light);}function initModel() {//辅助工具var helper = new THREE.AxesHelper(50);scene.add(helper);var loader = new THREE.VTKLoader();loader.load("/lib/assets/models/moai_fixed.vtk", function (geometry) {//模型的法向量有问题,更新一下法向量geometry.computeFaceNormals();geometry.computeVertexNormals();//创建纹理var mat = new THREE.MeshLambertMaterial({color: 0xaaaaaa});//创建模型var group = new THREE.Mesh(geometry, mat);group.scale.set(10, 10, 10);scene.add(group);});}//初始化性能插件var stats;function initStats() {stats = new Stats();document.body.appendChild(stats.dom);}//用户交互插件 鼠标左键按住旋转,右键按住平移,滚轮缩放var controls;function initControls() {controls = new THREE.OrbitControls( camera, renderer.domElement );// 如果使用animate方法时,将此函数删除//controls.addEventListener( 'change', render );// 使动画循环使用时阻尼或自转 意思是否有惯性controls.enableDamping = true;//动态阻尼系数 就是鼠标拖拽旋转灵敏度//controls.dampingFactor = 0.25;//是否可以缩放controls.enableZoom = true;//是否自动旋转controls.autoRotate = true;controls.autoRotateSpeed = 0.5;//设置相机距离原点的最远距离controls.minDistance  = 1;//设置相机距离原点的最远距离controls.maxDistance  = 200;//是否开启右键拖拽controls.enablePan = true;}function render() {renderer.render( scene, camera );}//窗口变动触发的函数function onWindowResize() {camera.aspect = window.innerWidth / window.innerHeight;camera.updateProjectionMatrix();render();renderer.setSize( window.innerWidth, window.innerHeight );}function animate() {//更新控制器render();//更新性能插件stats.update();controls.update();requestAnimationFrame(animate);}function draw() {initGui();initRender();initScene();initCamera();initLight();initModel();initControls();initStats();animate();window.onresize = onWindowResize;}
</script>
</html>

72 Three.js 导入VTK格式的模型相关推荐

  1. 67 Three.js 导入OBJ格式的模型

    简介 OBJ是一种简单的三维文件格式,由Wavefront Technologies创建.它是使用最广泛的三维文件格式,用来定义对象的几何体.MTL文件常同OBJ文件一起使用. Three.js还有一 ...

  2. babylon导入_77Three.js导入BABYLON格式的模型

    简介 babylon是一个三维javascript游戏库,它以自己的内部格式存储模型. 实现案例 首先,引入script加载器 然后,实例化加载器对象,然后加载模型,将获取到的模型进行处理,放到sce ...

  3. 76 Three.js 导入VRML格式的模型

    简介 VRML是Virtual Reality Modeling Language的缩写.这是一种基于文本的格式,允许定义三维对象和世界.它已被X3D文件格式取代.Three.js不支持加载X3D模型 ...

  4. 70 Three.js 导入STL格式的模型

    简介 STL是STLereoLithography(立体成型术)的缩写,广泛用于快速成型.例如三维打印机的模型文件通常是STL文件. Three.js还有一个可定制的STL导出器,叫作OBJExpor ...

  5. 88 Three.js 导入FBX格式骨骼绑定模型

    简介 上一节,深入了解了一下SkinnedMesh模型对象的创建.这一节,我们导入外部骨骼绑定的模型,来实现动画显示.由于Three.js支持的三维格式非常多,由于导入模式大同小异,我们就选择两种格式 ...

  6. 89 Three.js 导入dae格式的骨骼绑定动画模型

    简介 上一节,我们导入了一个官方的FBX格式的骨骼模型,实现了动画效果.这一节,更换了dae格式的模型导入,主要是这个模型返回的数据和FBX的返回格式有一些区别,下面我们将在案例中解析中间的区别. 实 ...

  7. 【UE4】导入FBX格式的模型至UE4

    转载自 https://blog.csdn.net/qq_33483344/article/details/80938161 在三维软件制作模型后,为了方便在引擎中能有效的编辑,我们需要注意以下几点: ...

  8. 导入FBX格式的模型至UE4

    在三维软件制作模型后,为了方便在引擎中能有效的编辑,我们需要注意以下几点: 1.单位统一 在UE4中,默认单位是CM,所以在使用max等三维软件开始制作之前,请先确保软件的单位与UE4的单位相匹配,并 ...

  9. Unity MegaFiers导入(pc2)格式缓存动画失败出现错误

    关于Unity MegaFiers-2导入point cache 2点缓存格式动画中出现的错误 先一套流程导入 出现的问题 先一套流程导入 1.把模型导入工程,选中模型添加一个modify objec ...

最新文章

  1. javascript事件列表解说
  2. ubuntu18.04.4 安装 qq x64 版本
  3. maven生成war包的两种方式
  4. 从动力学角度看优化算法:GAN的第三个阶段
  5. jquery获取radio选中值及遍历
  6. 【git】强制覆盖本地代码(与git远程仓库保持一致)
  7. StackOverflow问题:How to share CMSComponentData between several components in Spartacus manner
  8. CRM 里面table download to excel的实现
  9. 如何用DW设计界面 结合 VS设计后台代码
  10. BCH码和m序列参数估计(梅西迭代算法求多项式的MATLAB实现)
  11. python中怎么精确20位_Python中的精确处理
  12. [系统安全] 十二.熊猫烧香病毒IDA和OD逆向分析(上)病毒初始化
  13. Scratch案例——画长城
  14. 苹果CMS影视双端APP源码
  15. 无法定位序数XX于动态链接库XX.dll的解决的方法
  16. 自由度+凝固度+统计的新词发现
  17. 读高明之《帛書老子校注》
  18. 最新史上最大数据泄露,名为“Collection #1”的7.73亿数据!
  19. 【懒懒的Python学习笔记三】
  20. Java 时间日期API总结

热门文章

  1. 错误信息:FATAL: No bootable medium found! System halted.
  2. 不锈钢离合销 不锈钢门锁固定销 门锁开合离合销 不锈钢调节销钉
  3. 分布式锁及数据一致性
  4. 你要知道的21道软件设计 + 面向对象的面试题
  5. 计算机管理性能监视器,Win7计算机性能监视器的设置方法
  6. 西浦计算机网络题目,“你说我猜”如何让计算机根据语言描述对应图中物体?西浦研究成果获国际顶级人工智能期刊发表...
  7. window下安装MXNet
  8. 计算机考研比医学考研,医学考研心得经验分享
  9. 2017年第八届蓝桥杯JavaB组省赛 刷题笔记、思路及答案
  10. android 自定义下载器,表盘自定义工具下载-表盘自定义工具 安卓版v4.1.0-pc6手机下载...