用OpenSCAD构建校园建筑模型

来源 :中国信息技术教育 | 被引量 : 0次 | 上传用户:hq10000002
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  引言
  在温州中学学习生活了三年,毕业了免不了怀念。图1是母校的标志性建筑——行政楼,别有一番气势。在温州中学学习期间,我经常泡在创客空间,也接触到很多3D打印的相关知识。毕业之际萌发了做一个学校标志性建筑模型的想法,以纪念自己难忘的高中时光,同时感谢母校为我提供了广阔的舞台。
  建模准备阶段
  我最早接触使用的3D建模软件是Google SketchUp,类似SketchUp这类建模软件的建模主要基于画线成面,而后挤压成型建立三维模型。因此它的操作就像我们使用铅笔在图纸上作图一般,SketchUp软件本身能自动识别这些线条并加以自动捕捉。这类3D建模软件的优点就是交互式操作,效果直观简单。后来,我还在选修课上学习了OpenSCAD立体建模软件,这门课是一位数学老师教的。
  OpenSCAD是一款用于创建立体三维CAD对象的免费开源软件。OpenSCAD软件的建模是在脚本文件中描述对象,用脚本语言进行3D编译并呈现3D模型,用户可以在建模的过程中轻松地更改任何步骤,甚至设计所定义的配置参数。软件的建模操作包括两方面:一方面是利用OpenSCAD中模型的基础组件语句,如方形、圆柱等,配置指定参数软件转换成对应的3D视觉模型,而不是数据模型;另一方面是利用OpenSCAD的功能语句,进行模型移动、组合、联合、区分、交集、镜像等操作。
  但由于OpenSCAD偏于程式、参数化方面,而我又对自己的编程语言没有足够的信心,所以3D建模往往会选择交互式建模软件SketchUp。但是,在这栋楼的建模过程中,我发现大楼的建筑结构有许多重复之处,在SketchUp中操作显得太过繁琐,重复性的操作太多。想到OpenSCAD建模软件的代码建模能够彻底解决我的困扰,不仅修改方便,并且能够通过计算构建精确的大楼模型,于是决定选择OpenSCAD这位久违的“老朋友”。
  使用OpenSCAD建模需要提前进行计算,构思好每一个点的位置,规划好每一个部分的大小。于是,我画了一个行政楼的三视图草图,这个草图对之后的计算很有帮助,让建模过程也变得十分流畅。我画的正视图(如图2)中包括三维空间的X轴和Z轴。在正视图中,每一个点都标了相对应的坐标,这使得原本抽象的计算显得比较直观。在这个过程中,我主要选择了原图中比较容易实现的部分,对一些建模难以实现的部分做了相应简化。而且鉴于学校的3D打印机只有单色打印的功能,所以忽略了颜色参数的相关设置。俗话说,磨刀不误砍柴工。建模前期的画图工作不仅没有浪费时间,反而加快了我后续的建模进程,使得建模能够事半功倍。
  建模过程
  根据前期的构思,我选择从行政楼最主体的部分开始建模。行政楼主体首先是采用一个长方体去除中部的大门部分。在OpenSCAD的建模语言中,这部分首先需要用到的是长方体语句——cube([width,height,depth]),即设置相应的长宽高作长方体。大门部分采用差集语句——difference(),即由第一个多面体去除第一个以外的多面体。相关坐标点定位和移动用的是translate([x,y,z]),即设置相应的向量参数进行模型的移动。使用OpenSCAD时特别需要注意的是cube语句的后面是带有分号的,而translate则不需要。这也是我刚开始没注意而常犯的错误。
  行政楼主体部分的建模语言如下:
  difference() //由第一个多面体,减去除第一个以外的多面体
  {
  translate([-15,-15,-2]) //依照[-15,-15,-2]向量进行平移
  cube([30,45,2]); //以30,45,2作为长宽高作长方体
  translate([-0.5,2,-0.8]) //依照[-0.5,2,-0.8]向量进行平移
  cube([1,30,0.9]); //以1,30,0.9作为长宽高作长方体
  }
  行政楼主体部分建模结束之后,接下来的工作就是在原有的基础上一点一点增加细节。在这一过程中,还需要用到OpenSCAD中的并集语句——union(),即多个多面体的总和是或运算;交集语句——intersection(),即得出多个多面体相交的部分,是与运算。模型部分还用到了柱体语句——cylinder(h,r1,r2,center),多面体语句——polyhedron(points,triangles,convexity),球体语句——sphere(radius)等。从上述部分我们也可以发现OpenSCAD的建模语言其实还是比较简单的,大部分和英语单词的意思相对应,理解起来十分容易。
  行政楼主体部分完成之后的工作就是添加许多细节,包括窗户、水池、树等。当然树的模型进行了一定的简化,用的是两个柱体的组合。程序语言如下:
  union() //多个多面体的总和(或运算)
  {
  translate([2.5,2,0]) //依照[2.5,2,0]向量进行平移
  cylinder(h=1.5,r1=0.15,r2=0.05,$fs=10); //以1.5作高,0.15,0.05分别为上下圆半径作圆锥体,$fs是毫米表示角,表示周长除以数值,单位是毫米
  translate([2.5,2,1]) //依照[2.5,2,1]向量进行平移
  cylinder(h=1,r1=0.4,r2=0,$fs=10); //以1作高,0.4,0分别为上下圆半径作圆锥体
  }
  树的效果如图3所示。
  遇到的问题
  1.行政楼顶的曲线
  行政楼房顶有较大弧度的曲线(如图4)。曲线在3D建模中一直是一个比较难处理的部分。我在SketchUp中采用的方案是利用一个圆斜截一个圆锥从而得到抛物线,再通过相应操作进行调整找到需要的弧度。但在利用OpenSCAD脚本语言建模的过程中,虽然也可以用CSG模型解决曲线的问题,但涉及的运算却是我没有学过的,因此,行政楼房顶的曲线弧度只能用长方体替代。
  2.效果图显示部分
  从下页图5的代码输入界面中可以看出,行政楼中间的大门和楼顶两个长方形凹槽部分应该是被打通的。然而在效果图显示时,从不同的角度查看,却有一层绿色的图层若隐若现,时有时无,让我比较困扰。参考OpenSCAD中自带范例的效果图显示,以及咨询老师,发现他们都没有遇到过这种情况,效果图显示打通了就是显示空白了。老师建议尝试修改相关参数,发现只要将对应的参数稍微加大,让其处于完全贯穿状态,而不是恰好打通,效果图中就不会出现这一绿色图层。所以建议在设置OpenSCAD代码参数时需要根据具体情况做相应计算,参数设置要合理,否则可能会影响之后的建模及效果图呈现。图6是修改后的代码参数及效果图。
  3.行政楼房间
  行政楼中的房间这些大量重复性的建模我采用最基础的方法,就是在OpenSCAD中复制相应代码,改变部分参数,操作非常便捷。其实OpenSCAD中循环语句可以更好地解决这个重复性操作的问题,在软件的很多example中也采用了循环的方法。但是由于我对循环语句并不能娴熟应用,只好采用复制粘贴再修改的笨办法。但即便没有采用循环语句,我觉得这也远比在互动式建模软件中大量的重复操作要快捷许多。
  结束语
  在OpenSCAD建模软件的学习中,我的收获还是很大的,不仅学会了这款免费开源的建模软件,而且自己面对陌生事物的心态有了改变,很多事情只有着手之后才会发现远没有你想象的困难。
  3D建模能给我带来快乐,看着自己的想法一点点变成现实,二维的行政楼平面照片变成三维的立体模型,一种成就感油然而生,这应该也是创客动手制作的最大动力来源吧!虽然对于OpenSCAD的建模操作我只能算入门,但相信会慢慢熟练。同时,我也会去接触和学习其他的建模软件,因为我觉得3D打印的学习是一件充满乐趣的事情。希望自己能从中收获更多,也希望和大家一起交流有关OpenSCAD这款软件的建模心得以及有关3D打印的学习体会。最后附上温州中学行政楼模型效果图(如图7~图9)。
  如果对相关内容感兴趣,请关注主持人博客。
其他文献
阅读了方老师的博文,我心怀感激,感谢方老师对我这个“后进生”的关心,感谢方老师及其他老师的批判。这些批判使我意识到问题的所在,并促使我改变自己的教学理念。  我想改变教学理念首先要从学习开始,因此,我决定采用各种学习方法,及时了解有关信息技术的前沿知识,更新教学观念。在最近的教学中,我也做了改进。例如,改变以前“先讲后练,只练不评”的教学模式;适当增加学生自主学习环节;通过“生帮生”达到小组学习的
摘要:为了顺应创客教育发展的趋势,笔者结合自身的业务水平以及所在学校现有的软硬件条件,通过两年多的教学实践,尝试探索开发一套自成体系的基于3D设计及3D打印为载体的校本课程,使用系统化的微课,整理各章节的内容,以便于学生的自主学习、循环学习,本文剖析了三维创意设计校本课程在开发、教学过程中存在的问题,探索了微课在创客校本课程教学中的意义。  关键词:微课;创客;3D One;三维创意设计;3D打印
2016年6月5日,美国著名教育心理学家杰罗姆·S·布鲁纳在美国曼哈顿的家中逝世,享年100岁。作为一名世界知名的认知主义心理学家,布鲁纳带给了我们丰富的精神财富。听闻布鲁纳过世,我想起读博士期间认真阅读过他的两本著作——《教育过程》和《教育文化》。阅读时,我被著作里的真知灼见所打动,由此想到信息技术课程,感到布鲁纳教育思想对信息技术课程具有重要的指导意义。  超越繁琐的操作训练,走向信息技术学科
近年来,由于机器人比赛的蓬勃发展,机器人教学正从“为技术而教”转变为“为思维而教”,它已成为培养学生计算思维能力的新平台。下面,笔者结合IRobotQ 3D虚拟机器人汽车总动员项目教学实践,谈谈如何在机器人教学中渗透计算思维的诸要素,从而提高学生的计算思维能力。  ● 对比求解,激发计算思维意识  培养学生的计算思维首先在于激发其计算思维意识。因此在教学中,我们应有意引导学生用计算思维的方式求解问
当下,新技术不仅为学生的学习和发展提供了智能环境,更成为学生学习不可或缺的有力工具。江苏省南京市东山外国语学校团队(以下简称A)和山东省淄博市桓台县实验中学团队(以下简称B)的两篇微课程教学设计,均从不同的视野与角度,通过不同的途径与方式追求着新技术支持下语文学习的生态与高效。  两案例的优势与特色  《散步》是一篇情深意切的优美散文,它描写了普通家庭祖孙三代春日散步的情景。为了使学生品味其中富有
以往的研究表明,绿茶对身体健康有许多好处。然而美国宾州州立大学最新研究指出,绿茶的益处取决于其活性成分的生物利用度。它不仅是一个我们吃什么的问题,而且还包括我们什么时候吃,以及我们在喝茶的同时还吃了什么的问题。  “如果你在进食富含铁的食物后喝绿茶,绿茶中的主要成分将与铁相结合。这样一来,绿茶就失去了作为抗氧化剂的潜力。”研究者说。为了获得绿茶的益处,最好是不吃富含铁的食物。富含铁的食物包括红肉和
创客教育的中国气派,口气是不是有点太大了呢?要不要改成“创客教育的中国气象”这种低调一些的描述?  清晨,路过报刊亭买了一本《习近平谈治国理政》第二卷,其中《在哲学社会科学工作座谈会上的讲话》中指出,“要按照立足中国、借鑒国外,挖掘历史、把握当代,关怀人类、面向未来的思路,着力构建中国特色哲学社会科学,在指导思想、学科体系、学术体系、话语体系等方面充分体现中国特色、中国风格、中国气派。”教育学的探
拓展:拓是开辟;展是张开。拓展就是开拓、扩展的意思。有调查研究表明,培训如果只是以讲座的形式进行,学员只能记住5%的内容;如果有人示范,则可以记住30%的内容;如果有全体的讨论互动,则可以记住50%的内容;如果在培训中安排了实践活动,那么可以记住75%的内容。  同时,企业拓展和信息技术课程有一个共同的核心——合作,拓展训练通过运动与游戏的方式融入学习,信息技术课也可以通过游戏的形式开展学习,拓展
在信息化教学手段早已普及的今天,传统教学模式已无法跟上时代的步伐。在当前最流行的创客教学中,传统教学模式似乎已经完全没有市场了,PBL教学模式作为一种国际流行的教学模式,正被大量使用。那么,哪种方法更适合创客教学呢?传统教学模式在今天还能焕发青春吗?  ● 传统教学模式的优缺点  传统教学模式是以教师为中心、以教师系统地传授知识体系为主的。其优点在于:教师在课堂中处于主导地位,能充分驾驭课堂,有助
南京市紫竹苑小学的丁侠老师一直执着于将计算思维的理念渗透到信息技术教学中。在《用声音控制小猫动作》一课中,她成功地将计算思维思想进行了系统的物化,展现了一节成功的信息技术示范课。我有幸参与了备课、授课的全过程,因此颇有感触,现整理如下。  ● 整体构建,细节雕琢  计算思维注重对学生学习力和思维力的培养,在信息技术学科授课过程中,强调通过必要的学习途径,让学习者能够深入地对学到的内容进行结构化的再