现在的页面展示要求越来越高,美的展示总能吸引更多的访客。最近在学习3D打印中的切片算法,刚刚入门,发现通过three.js框架可以很好展示出3D切片细节(虽然我做的比较简单)。

//==========================================================
//导入three.js和mygeo.js文件(自定义几何体顶点和三角片信息)
//========================================================== var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(45,window.innerWidth/window.innerHeight,0.1,1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth,window.innerHeight);
renderer.setClearColor("white");
document.body.appendChild(renderer.domElement);
//上面6行初始化场景、照相机及渲染器========================= var axes = new THREE.AxisHelper(10);
scene.add(axes);
//上面两行画出辅助坐标系 //根据mygeo.js中的信息画自定义几何体
var geom = new THREE.Geometry();
geom.vertices = vertices;
geom.faces = faces;
geom.computeFaceNormals();
ma = new THREE.MeshBasicMaterial({color: 'black', wireframe: true});
var G = new THREE.Mesh(geom,ma);
scene.add(G);
//上面7行画出自定义的立体几何体 camera.position.x = 5;
camera.position.y = 6;
camera.position.z = 8;
camera.lookAt(scene.position);
//上面几行设置相机位置 //自定义的三角形片和Z=h截面总有2个交点
for(var h = 0.5;h <= 6;h += 0.5)
{
var intersection = new Array();
for(var F = 0;F < faces.length;F++)
{
var point1 = vertices[faces[F].a];
var point2 = vertices[faces[F].b];
var point3 = vertices[faces[F].c];
var surface = [point1,point2,point3]; if((surface[0].z-h)*(surface[1].z-h)<0) //0-1
{
var m = (h-surface[0].z)/(surface[1].z-surface[0].z);
var x = m * (surface[1].x-surface[0].x) + surface[0].x;
var y = m * (surface[1].y-surface[0].y) + surface[0].y;
var p = [x,y,h];
intersection.push(p);
}
if((surface[0].z-h)*(surface[2].z-h)<0) //0-2
{
var m = (h-surface[0].z)/(surface[2].z-surface[0].z);
var x = m * (surface[2].x-surface[0].x) + surface[0].x;
var y = m * (surface[2].y-surface[0].y) + surface[0].y;
var p = [x,y,h];
intersection.push(p);
}
if((surface[1].z-h)*(surface[2].z-h)<0) //1-2
{
var m = (h-surface[1].z)/(surface[2].z-surface[1].z);
var x = m * (surface[2].x-surface[1].x) + surface[1].x;
var y = m * (surface[2].y-surface[1].y) + surface[1].y;
var p = [x,y,h];
intersection.push(p);
}
} var material = new THREE.LineBasicMaterial({color: "red", linewidth: 6});
var geometry = new THREE.Geometry();
for(var i1=0;i1<intersection.length;i1++)
{
var p1 = new THREE.Vector3();
p1.set(intersection[i1][0],intersection[i1][1],intersection[i1][2]);
geometry.vertices.push(p1);
}
var line = new THREE.Line(geometry,material);
scene.add(line);
} renderer.render(scene, camera);

通过three.js实现简易3D打印模型切片展示的更多相关文章

  1. 如何制作简单的 3D 打印模型

    Hi 大家好! 了解一个方兴未艾,但极为有趣的话题 — 3D 打印 . 为了帮助大家对3D打印有一个初步的感性认识,我在线制作了一款可用于3D打印的model, 大家可以先通过体验这个在线 model ...

  2. 3D打印技术在医疗上的实际应用与实验室研究

    2018-01-17 Chris 免费3D打印模型资源站 预计阅读时间:5-10分钟 关键字:3D打印髋关节.脊柱置换产品,3D打印技术辅助精准截骨,义齿,生物墨水(BioInk),干细胞   随着& ...

  3. 12只超酷机器人,在家用3D打印搞定!

    3D打印最吸引人的地方在于它完全无极限!现在的3D打印已经广范应用在我们的生活.以及工业上的各个领域.最棒的是,DIY玩家可以真正从中受益.我们现在已经可以应用3D打印,在家制作自己的机器人了.如果你 ...

  4. 《3D打印与工业制造》个人总结 —— 周吉瑞

    <3D打印与工业制造>个人总结 ---- 周吉瑞 JERRY_Z. ~ 2020 / 10 / 24 转载请注明出处!️ 目录 <3D打印与工业制造>个人总结 ---- 周吉瑞 ...

  5. 《3D打印与工业制造》—— 读书笔记

    <3D打印与工业制造>-- 读书笔记 原创内容,学习不易,转载请注明出处! 一.读后感-- "WOW" ​ 可以这么说,<3D打印与工业制造>这本书是我第一 ...

  6. 使用three.js创建3D机房模型-分享一

    序:前段时间公司一次研讨会上,一市场部同事展现了同行业其他公司的3D机房,我司领导觉得这个可以研究研究,为了节约成本,我们在网上大量检索,最后找到一位前辈的博文[TWaver的技术博客],在那篇博文的 ...

  7. Three.js 3D打印数据模型文件(.STL)载入中

    3DPrint是现在和未来10年度科技产品的主流之中.广泛的. 对于电子商务类3D打印网站.一个主要功能就是商品3D呈现的方式,那是,3D数据可视化技术. HTML5(WebGL)它可以用于构建3D查 ...

  8. 使用Node.js实现简易MVC框架

    在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...

  9. [转] 使用Node.js实现简易MVC框架

    在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容.单靠静态资源岂能撑得起这些复杂的网站应用,本 ...

随机推荐

  1. spark安装及配置

    windows下spark的安装与配置教程 Windows下安装spark windows下搭建spark环境出现ChangeFileModeByMask error (3): ??????????? ...

  2. c# 使用Expression 生成sql

    使用Expression 生成sql  update语句的时候遇到了个问题 ,Expression<Action<T>>  la   这个委托里面老获取不到 引用类型的值,甚至 ...

  3. _proto_和prototype

    _proto_和prototype 实例对象中有一个属性,_proto_,也是对象,叫原型,不是标准的属性,浏览器使用的, 构造函数中有一个属性,Prototype,也是对象,叫原型,是标准属性,程序 ...

  4. [JZOJ3424] 【NOIP2013模拟】粉刷匠

    题目 题目大意 有\(K\)种颜色的小球,每种颜色的小球有\(c_i\)个. 求相邻颜色不同的排列的方案数. \(K\leq 15\)且\(c_i\leq 6\) 思考历程&正解1 我是一个智 ...

  5. ZuulFilter

    在服务网关中定义过滤器,只需要继承ZuulFilter抽象类,实现其定义的四个抽象函数,就可对请求进行拦截与过滤 过滤器两个功能: 路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入 ...

  6. 5020: [THUWC 2017]在美妙的数学王国中畅游

    传送门 当年听llj讲的时候觉得这简直是个不可做的神题. 现在看来并不是很神,可能是我已经被剧透了的缘故... 一开始以为是函数套函数,懵蔽了好久,结果只是求和 被剧透了泰勒展开就比较水了..只要你不 ...

  7. win7下mysql5.5与mysql5.6同时安装

    5.5己正常的情况下,用官方下载的安装包总是不成功,用的官方解压版5.6.44 1.复制my-default.ini到my.ini,只需要改端口就行了,设置base-dir/data-dir反而无法启 ...

  8. vue 绑定多个class

    <div :class="[box,shadow]"></div> 或 :后面跟条件,条件成立则添加class,否则不添加 :class="[{' ...

  9. PHP面向对象之继承的基本思想

    图例 概念和说明 代码展示 <?php header('content-type:text/html;charset=utf-8'); //学生考试系统 class Student{ publi ...

  10. springboot配置文件application.properties更新记录(自学使用)

    #应用名称spring.application.name=demo #应用根目录server.context-path=/demo #应用端口server.port=8084 #错误页,指定发生错误时 ...