NCF参数化建筑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 夜神
打印 上一主题 下一主题

[个人作品] 初学Rhinoscript时的作品:古建筑建模

  [复制链接]
21m
发表于 2010-5-29 20:02:27 | 只看该作者
21# 夜神 就是Grasshopper啊!参数建模神器
22m
发表于 2010-5-29 20:07:45 | 只看该作者


再问问当时的参考资料?我最近也在做着玩,发现2002年的硕士论文就有写这个的了 后面还被写了几次,里面有比较详细的方法呢
23m
发表于 2010-5-29 21:44:32 | 只看该作者
楼主威武~
~~~
24m
 楼主| 发表于 2010-5-29 21:54:30 | 只看该作者
23# zhouningyi1
参考资料只有rhino自带的帮助文档了,还好我英语还行,呵呵
25m
 楼主| 发表于 2010-5-29 21:56:07 | 只看该作者
Grasshopper我没用过,一直用RS,据说两者功能差不多
26m
发表于 2010-5-29 23:01:28 | 只看该作者
23# zhouningyi1  
参考资料只有rhino自带的帮助文档了,还好我英语还行,呵呵
夜神 发表于 2010-5-29 21:54


足够强大啊!
27m
发表于 2010-5-29 23:01:39 | 只看该作者
很精致的模型,能做成这样一定很下功夫的,向楼主学习!
28m
发表于 2010-5-29 23:03:39 | 只看该作者
我只能说 我被镇住了
29m
发表于 2010-5-29 23:43:37 | 只看该作者
这个怎么会是用rhinoscript做的呢?
30m
发表于 2010-5-29 23:53:02 | 只看该作者
锰叼!!!!!!! 
31m
发表于 2010-5-30 02:55:13 | 只看该作者
lz威武 我要赶快抓紧时间学习了
32m
发表于 2010-5-30 11:00:06 | 只看该作者
强烈要求兰州上传RVB文件~!!!!
33m
发表于 2010-5-30 15:13:28 | 只看该作者
楼主是跟着教材做的吗??
头像被屏蔽
34m
发表于 2010-5-30 18:02:36 | 只看该作者
brazil一直没用 那个本人不是搞建筑的 让我们很汗颜啊

楼主牛人
35m
 楼主| 发表于 2010-5-31 00:17:04 | 只看该作者
楼主是跟着教材做的吗??
zhuyifei2432 发表于 2010-5-30 15:13

如果你说的是一步步跟着做的教材,还真没有,不过古建筑结构的书买了不少。当时做这个主要还是忽然对古建筑发生了兴趣,并不是为了练习RS而找东西做。如今我RS用的算熟练,还是拜古建之赐。带着目的学东西比纯粹的做练习上手要快的多。

对古建发生兴趣是源于一位日本建筑师池上俊郎,他来我们学校做报告,把他的团队用FormZ软件建的日本五重塔模型搞了一个声势浩大的展览。当时我是有点不服,心想我要搞出一个纯模数化的古建快速建模程序跟他PK一下。正好那时论文做完没事了,说干就干,立刻动手。古建方面的参考资料主要是马炳坚的《木作营造技术》和刘大可的《瓦石营法》,RS就是纯粹看帮助了,幸得以前有些编程基础,上手还不是太难。这个程序写了一周左右,后来对RS渐渐熟悉了,重新调整程序结构又用了将近半个月。我当时是有些钻牛角尖的,觉得只做个外观不算水平,要内部结构全做出来才牛,而且所有尺寸全部按照《营造则例》来推算,一个都不马虎。这样做下一个模型来才发现Rhino搞古建是有些吃力的,由于模型太大,渲染时频繁死机。所以做完重檐歇山后就罢手了。

后来又参加过几个建筑项目,包括舟山的世界佛教论坛会馆,张锦秋设计的那个莲花形状的建筑。张大师给了个草图,华夏所(西北建筑设计院)出的立面图形状也有很多问题,两个侧视图都对不上。最后精确曲面形态的确定,还有曲面施工图数据都是我用RS算出来的。现在想想,蛮有成就感的,呵呵!
36m
发表于 2010-5-31 01:22:08 | 只看该作者
楼主   可否清楚的说明这个古建的哪部分是rhinoscript编的?还有可否把编程流程说明一下?屋脊的鸱首不会也是编的吧?
37m
 楼主| 发表于 2010-5-31 07:55:30 | 只看该作者
楼主   可否清楚的说明这个古建的哪部分是rhinoscript编的?还有可否把编程流程说明一下?屋脊的鸱首不会也是编的吧?
freeze23 发表于 2010-5-31 01:22

全部都是,里面还带一个简单的环绕游历。
螭吻和垂兽只是意思一下而已,RS也编不出更复杂的了。
38m
 楼主| 发表于 2010-5-31 09:47:36 | 只看该作者
强烈要求兰州上传RVB文件~!!!!
小r学生 发表于 2010-5-30 11:00

这位兄弟的要求让在下有些为难了。这个程序有上万行,不过这还不是主要的。这个程序已经送给一个朋友的公司申请了软件著作权,现在已经不是我的东西了。


这里贴出参数定义函数给大家看一下吧,没什么技术上的深度,倒是古建方面的知识需要一些。——当然,还需要耐得住寂寞,编程很枯燥,呵呵!
通用参数计算程序.rvb (10.57 KB, 下载次数: 109)
39m
 楼主| 发表于 2010-5-31 09:56:01 | 只看该作者
本帖最后由 夜神 于 2010-5-31 09:58 编辑
楼主   可否清楚的说明这个古建的哪部分是rhinoscript编的?还有可否把编程流程说明一下?屋脊的鸱首不会也是编的吧?
freeze23 发表于 2010-5-31 01:22

这个是入口程序:
注意:这个程序会更改背景色为黑色,以便跟建筑师熟悉AutoCAD一致。

Option Explicit
go_SoloPalace
SUB go_SoloPalace
'文件模式
'Rhino.DocumentModified vbFalse
'Rhino.Command "-New N "
'视图模式
Rhino.CurrentView "Perspective"
Rhino.Command "SetMaximizedViewport Perspective "
'禁用自动保存功能(文件太大,浪费时间)
Rhino.Command "-Options Files Autosave Enabled=No Enter Enter Enter "
'显示模式
'Rhino.Command "RenderedViewport "
Rhino.Command "WireframeViewport "
'背景色
Rhino.AppearanceColor 0,0
Rhino.Command "-LoadScript C:\rvb\02_Palace\settings.rvb "
settings
DIM arrItems(8), arrValues
arrItems(0)="台基"
arrItems(1)="柱"
arrItems(2)="梁檩"
arrItems(3)="椽"
arrItems(4)="斗栱:枋/垫栱板"
arrItems(5)="斗栱:角科"
arrItems(6)="斗栱:柱头科"
arrItems(7)="斗栱:平身科"
arrItems(8)="瓦"
'arrValues=Array(1,1,1,1,1,0,1)
DIM strMessage  : strMessage="请选择要建模的部分"
DIM strTitle   : strTitle="单檐庑殿建筑建模"
arrValues=Rhino.CheckListBox (arrItems, Array(1,1,1,1,0,0,0,0,0), strMessage, strTitle)
DIM pi   : pi=4*Atn(1)
DIM r   : r=5000    '视域半径
DIM n   : n=1     '视线角度alfa=n*pi/12
DIM alfa  
IF arrValues(0)=vbTRUE THEN
  alfa=n*pi/12
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\platform_单檐庑殿.rvb " ': Rhino.Command "Zoom Extents "
  viewRotate n,2,1.5*r,45,360+45
END IF
IF arrValues(1)=vbTRUE THEN
  alfa=n*pi/12
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\pillars_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n,2,r,45,360+45
END IF
IF arrValues(2)=vbTRUE THEN
  alfa=n*pi/12
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\beams_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n,2,r,45,360+45
END IF
IF arrValues(3)=vbTRUE THEN
  alfa=n*pi/12
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\roof_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  viewRotate n,3,r,45,360+45
END IF

IF arrValues(4)=vbTRUE THEN
  alfa=0
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\archs_枋_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n-1,3,r,45,360+45
END IF
IF arrValues(5)=vbTRUE THEN
  alfa=0
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\archs_角科_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n-1,3,r,45,360+45
END IF
IF arrValues(6)=vbTRUE THEN
  alfa=0
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\archs_柱头科_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n-1,3,r,45,360+45
END IF
IF arrValues(7)=vbTRUE THEN
  alfa=0
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\archs_平身科_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n-1,3,r,45,360+45
END IF
IF arrValues(8)=vbTRUE THEN
  alfa=n*pi/12
  Rhino.ViewCameraTarget Rhino.CurrentView, Array(r*cos(alfa)*cos(pi*45/180),-r*cos(alfa)*sin(pi*45/180),r*sin(alfa)), Array(0,0,300)
  Rhino.Command "-LoadScript C:\rvb\02_Palace\tiles_单檐庑殿.rvb "  ': Rhino.Command "Zoom Extents "
  'viewRotate n,3,r,45,360+45
END IF
viewRotate 0,3,r,45,360+45
END SUB
'---------------------------------------------------------------------------------------------------
' 旋转展示子程序
'---------------------------------------------------------------------------------------------------
FUNCTION viewRotate(n,AngleStep,r,startAngle,endAngle)
DIM i,j,pi  : pi=4*Atn(1)
DIM pause
DIM arrCamera,arrTarget
DIM alfa
arrTarget=Array(0,0,300)
FOR j=n TO n
  alfa=j*pi/12 '视线与地面夹角
  FOR i=startAngle TO endAngle  STEP AngleStep
   arrCamera=Array(r*cos(alfa)*cos(pi*i/180),-r*cos(alfa)*sin(pi*i/180),r*sin(alfa))
   Rhino.ViewCameraTarget Rhino.CurrentView, arrCamera, arrTarget
  NEXT
NEXT
END FUNCTION
40m
发表于 2010-6-1 03:02:24 | 只看该作者
好贴 感谢LZ耐心讲解 慢慢消化学习着

小黑屋|手机版|NCF参数化建筑论坛 ( 浙ICP备2020044100号-2 )    辽公网安备21021102000973号

GMT+8, 2024-11-24 20:15 , Processed in 0.074703 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表