分类:建筑

Rhino.python实时动态显示与鼠标捕捉 —像玩Processing一样玩Rhino.Python?

Rhino.Python平台是以静态建模为主的算法三维建模工具,很少有人会用它来作一些动态效果,因为在一般情况下使用Rhino.Python进行动态效果显示需要首先生成模型然后再删除之,这个过程会极大的影响速度,而且一般只能依靠写好的算法自动运行,与即时的鼠标或键盘事件互动也很困难。 不过还是有方法可循,虽然与Processing、cinder。openframwork等工具完全不可比拟。 最初从自带案例中的CustomGetPoint.py得到相关线索。Rhinocommon SDK可查询到Rhino.Display类下的DisplayPipeline类型可以在Rhino中进行比较简单的即时显示,虽说简单,就模型类型而言还是比较全面,点、线、面和基本曲面几何体都可不生成模型的情况下即时显示。Rhino本身的显示依靠OpenGL,因此速度尚可。缺陷便是这里面无法进行阴影、纹理着色和光源等高级显示效果。 DisplayPipeline类型可借助.net编程中的事件与委托(event,delegate)来调用DynamicDraw(动态显示)方法。DynamicDraw方法的第二个参数只能是Rhino.Input.Custom. GetPointDrawEventArgs。 在Rhinocommon SDK中可以查到Rhino.Input.Custom.GetPointDrawEventArgs类有Display方法,Rhino.Input.Custom.GetPointDrawEventArgs属于Rhino.Display.DisplayPipeline的成员。 因此就可以使用以下语法在Rhino视窗内进行即时显示: point = Rhino.Input.Custom.GetPoint() def func(sender,args):   args.Display.DrawPoint(args.CurrentPoint,System.Drawing.Color.Blue) point.DynamicDraw += func point.Get() 以上point.DynamicDraw += func一句便是将gp.DynamicDraw方法与func函数进行事件委托,如果要取消委托可以用point.DynamicDraw -= func。 由于DynamicDraw方法只能向函数内传递一个参数,即GetPointDrawEventArgs,可以定义一个类来达到传递多个参数的方法,如以下例子 gp = Rhino.Input.Custom.GetPoint() mypt =... Read More | Share it now!

分类:建筑

New Book,NanJing Hill 及其他

有半年没有更新博客,实在惭愧。业已本科毕业,但除却与朋友同学告别有所伤感之外,其他方面未曾感到有何改变,毕竟还将作为学子继续在原来的象牙塔呆下去。本科的最后一个学期主要做成了两件事(毕业设计太烂,不算之一)1 与曾旭东教授和陈辉合作,以及在李憬君同学、周宏伟学长、郭璐瑛同学帮助下完成的《Rhinoceros & Grasshopper 参数化建模》8月份已经出版,不过这仍然是一本偏重于入门级别的基础知识教材,所以还望高手勿喷。就Rhino部分而言,这本教材中的主要讲解逻辑还是沿用我之前电子书中的Rhinoceros介绍逻辑,比较重要的工具都配上了具体操作案例和使用范畴的介绍,重新梳理了NURBS原理部分。不过整本书的图像印刷质量实在不敢恭维,请各位还是对照文字和光盘中给的每个文件来进行学习。 感谢天津大学的Hunter兄给我原来的那本电子教程加上了文档结构图以及章节链接,这里提供下载,这个版本是docx格式,《犀牛建模入门》发布以来,几个原始链接下载次数超过6000次,许多同学给我来信告诉我这本小教程对他有帮助,我也希望能更新此电子书的新版本,但个人精力和时间实在有限,若各位有心帮助他人的话,不妨在这本小资料中添加您自己的东西,您在发布新版本时只要不要将其商业化使用、以相同方式共享并且提到前面作者的名字即可,若您觉得您在这本资料中做了非常重要的工作,请将您排在第一作者。下载地址:https://skydrive.live.com/view.aspx/.Public/%e5%a4%a7%e5%b7%9d%e7%9a%84%e7%8a%80%e7%89%9b%e5%85%a5%e9%97%a8%e6%95%99%e7%a8%8b%5E_%5E_%e5%b8%a6%e6%96%87%e6%a1%a3%e7%bb%93%e6%9e%84%e5%9b%be.docx?cid=d3cc97d2718ad514&sc=documents 2 . 7月至8月与陈辉、秦媛媛和余琪完成了Nangjing... Read More | Share it now!

分类:建筑

建筑院校数字年会上的Cryengine3技术演示

以下是重庆大学举办的建筑院校数字年会上的Cryengine3的一个简短技术演示,由于比较匆忙,只是简单的表现了一下cryengine3用于建筑虚拟现实的技术特性。 http://www.tudou.com/programs/view/OlKubZ7KXg0/ 建筑虚拟现实技术正在从制作预设的游览动画向参与者直接沉浸到虚拟建筑中去,与虚拟场景中的各个对象进行交互。 这是一项综合性的技术,简单来讲,可以从硬件层面和软件层面来看,硬件方面,各种体感或者视感设备正逐渐应用进来,从软件层面,场景真实氛围的营造和物理互动的实现需要好的软件引擎与硬件设备进行接口支持。不可否认,在表达场景真实性的实时渲染技术和物理特效方面,游戏领域是走在最前端的。 长期以来,游戏公司为了保持技术领先,优秀的引擎都是处于闭源状态,Crytec公司率先开放了其顶尖的游戏引擎:Cryengine,并提供在教育等一些非商用领域的免费使用授权,这给了我们提供了在虚拟现实技术方面向游戏借鉴和学习的机会。Hill Nangjing项目便使用Cryengine3这方面进行了尝试,从中可看到这类实时渲染引擎在建筑虚拟现实应用上的潜力。得到的作品也作为展品放置在门外的计算机上各位可以进行尝试。 经过我们的研究和总结,Cryengine3在建筑虚拟现实上具有以下的一些技术优势。 1. 作为顶尖的游戏引擎,Cryengine3得到的实时渲染画面公认具有非常真实的效果。 2.... Read More | Share it now!

分类:建筑

Grasshopper动态渲染工具集(家里电脑渲染不给力,求人做个演示视频)

原始脚本在http://www.grasshopper3d.com/forum/topics/vray-animation发现,这个GH动态渲染脚本最初是在google group上的一个grasshopper论坛上由众人共同演绎而成。但gh0.7版本之后原脚本不在适用,因为新的GH版本简化、删除了rhino common中的某些类和函数标签。我差不多花了一个星期研究这几个脚本,结果的确令人兴奋,目前实现了将rhino中的任何一个静帧插件渲染器(vray、flamingo、penguin、rhino render等(很遗憾不包括hypershot和keyshot这两者都是独立渲染器))变为动态渲染器。包括GH动态效果的渲染、摄像机路径漫游渲染以及动态效果与路径漫游两者相结合的动画渲染。这个脚本集中主要包含了四组vb.net和dotnet... Read More | Share it now!

分类:建筑

Grasshopper模拟Ecotect日照分析

对比如下In Ecotect:In Grasshopper: 这个脚本借鉴了一些前人的GH脚本算法,我还会不断改进,目前实现了在任意地区任意时间的动态日照图像分析,基本仿照Ecotect的界面完成。但还存在一些问题:例如GH并不提供一个日期表,使用slider运算器每个月都是相同的31日,但核心算法来自美国日照研究实验室网站http://www.nrel.gov/rredc/,运行结果应该不会有多大错误,但我不敢保证,所以请勿草率将其用于实际项目。我很敬佩ncf的fans1014等同学不断在GH中探索实现日照分析的功能http://ncf.5d6d.com/thread-1733-1-1.html,并且实现了初步的阴影算法。但我认为这种二次求点来求得阴影的算法效率不高,速度很慢,实在不该重新制造车轮。GH目前还不支持基本的渲染,我对GH实现阴影算法的想法是在GH支持基本渲染及灯光属性之后,使用灯光,例如平行光模拟太阳光等来实现相关的日照阴影。至于其他例如表面曝晒值,采光系数等使用GH的VB.net和C#脚本高效模拟实现则是完全有可能的。有兴趣请探讨之(站内PMwdc63)脚本下载:gh_crack_eco.ghx(0.80004) ... Read More | Share it now!

分类:建筑

Rhinoscript三维形态球谐函数

球谐函数是近代数学的一个著名函数,目前被广泛用于计算机图形学,渲染光照处理以及球面映射等方面,球谐函数在形态方面也有极强的表现能力,西澳大学的Paul Bourke的球谐函数三维形态公式:r = sin(m0*phi)^m1 + cos(m2*phi)^m3 + sin(m4*theta)^m5 + cos(m6*theta)^m7是其中著名的算法之一。该公式提供8个基本参数m0-m7,使得最终形态具有无数种变化,这两天我据此写出了rhinoscript的三维球谐函数程序。感谢NCF上海-杯具兄在算法写作当中的讨论和帮助。 对于此公式的核心函数算法代码如下: Function mainfunction(u,v,m,radius) Dim r,collect(2) r=0 r=r+(sin(m(0)*v))^m(1) r=r+(cos(m(2)*v))^m(3) r=r+(sin(m(4)*u))^m(5) r=r+(cos(m(6)*u))^m(7) r=r*radius collect(0)=r*sin(v)*cos(u) collect(1)=r*cos(v) collect(2)=r*sin(v)*sin(u) mainfunction=collect End Function Collect()数组从此公式中取得点坐标。 后面有两个源文件下载,其中之一为定义好参数的样本代码,另一文件为用户自定义参数,参数如何设置请参看提示和源代码。 运行过程如下: 先求得所有点 再根据之前的点索引对点进行嵌面(这里使用rhino.addsrfpt函数使得文件增大,希望有人能提供rhinoscript四点建立poly面的方法)最后手动删除点得到三维形态:选取不同参数可以获得十分丰富的变化,请自行尝试。 由于家里电脑配置问题,模型精度不是太高,使用100,可以在自行使用时尝试更高精度。代码下载:球谐函数带参数范例球谐函数用户自定义参数   ... Read More | Share it now!

分类:建筑

使用GRASSHOPPER剔除重复数据

关于这个问题GH群里提出了有很多种方法,有VB法,EXCEL法,我这里使用了一个比较简洁的直接采用GH运算器的算法解决了这个问题,唯一缺陷就是数据将被sort运算器重新排列一次,最后得到的数据将可能不是原始数据,而是一个从大到小或者从小到大的数据排列。具体算法如下(点击得到大图):GH由于无法实现LOOP,很多循环需要重复运算器来完成,倒是有个思路,但是非常复杂,就没有尝试了,玩GH容易上瘾,课程设计都荒废了。下载地址:GHX ... Read More | Share it now!

分类:建筑

曲面分割之-不等分割曲面

今天在群里和大家讨论如何进行不等的分割曲面,GH中实现面的分割非常容易,一个最为简单的算法与此:但若是想进行不等的曲面分割就麻烦些了。很少看到有不等的曲面分割例子,我琢磨了下。DOMAIN2函数可以取得一个曲面的UV总区间,因此对曲面分割的思路就是对这个区间进行不等分割。但这一部分的数据处理并不简单,至少在这个算法当中,一个使用随机数对区间进行分割的算法如下,使用类似的思维对数组进行处理可以得到不同的分割变化方式(斐波那契数列等):下载地址:GHXand3DM这个例子中还包含了一个在均分曲面情况下仅使用随机数作为微小影响因子的曲面分割案例,这里包含了从一个数组剔除首尾的算法。 ... Read More | Share it now!

分类:建筑

GH成管套装V1.0

下载地址:http://cid-d3cc97d2718ad514.skydrive.live.com/self.aspx/.Public/GHpiping/GHpiping%5E_v1.0%5E_by%5E_alwayswdc.rar我在犀牛入门教程中讲到了我封装的Rhino插件pipecurve插件(下载地址),很多同学发现它并不好用,一来安装插件通常遇到错误,有些同学甚至在SR7下也无法安装,二来成管方法单一,只能进行圆管成管。我这儿写了几个简单的GH成管文件方便你进行批量成管,以弥补pipecurve的不足。可进行以下形式的批量成管:方管:圆角方管:圆管:椭圆管:多边形管:使用方法:1 必须使用犀牛grasshopper插件打开使用。                2 右键第一个运算器crv,选择Set Mutiple Curves,然后再选择场景中需要成管的曲线。            3 根据半透明panel内的参数进行截面设置。 ... Read More | Share it now!

分类:建筑

寒假犀牛课程PDF电子版下载

下载地址: 下载地址1:http://www.brsbox.com/filebox/down/fc/334f659435ae29a53c79228ef197115d 下载地址2:http://d.namipan.com/d/18df44bfcba1e530dd2fe4b32407fece86b2506eb611c000 下载地址3:http://cid-d3cc97d2718ad514.skydrive.live.com/self.aspx/.Public/RhinoTutorialByDaChuan.rar 四年级上学期的时候,我周围一些同学提到希望能向我学习一些我在软件运用上的经验,碍于当时专业课程的繁重和一些自身事情,对于这种请求我多数情况下只是给与了零散和狭隘的知识或是拒绝了。我通常是告诉他们”**软件或者**软件的**功能应该可以解决你的问题”,我发现这样做根本不能帮助我的朋友们解决他们在软件方面的困惑,反而古怪繁复的软件名词让他们更为摸不着头脑。恰好四年级的这个寒假没有其他打算,遂决定利用这个机会总结和给大家分享一下我在软件运用方面获得的诸多经验,也算是对自己的一个总结。 我选择了进行网络文字犀牛教学,将建模思维融入其中的方式,但最终毕竟还是做成了一个普通无奇的犀牛入门教程。承蒙院学生会学习部的宣传,很多学院的同学加入到了群里,从NCF网站群里也来了很多朋友。从教程的构思到完成前前后后大约付出一个月时间,我最后整理课件的时候发现自己竟然完成了接近四万字和四百多张图片,遂决定成册。... Read More | Share it now!