2008年12月7日星期日

用Rhino来合成环境图片和渲染图

很多时候我们在建模渲染之后和和照片合成,使用Rhino的PerspectiveMatch命令可以轻松达到目的。

 

perspectivematch-a

手动将透视图的视角符合工作视窗的底色图案。

步骤:

  1. 使用工作视窗属性的底色图案选项,在透视视图中放置图片。

  2. 点选有设置底色图案的工作视窗 ( 使它成为使用中的 工作视窗 ),输入 PerspectiveMatch 指令。

  3. 在底色图案上指定一点,然后在模型上指定该点的对应点。

    重复同样的动作,直到指定了至少六对底色图案和模型上的对应点。

  4. 指定六对以上的对应点,按 Enter 结束指令。

附注

  • 使用底色图案必需真实、有透视效果的照片,以特殊镜头修正透视效果的照片无法得到正确的结果。

  • 底色图案照片的中心点必需是位于摄影机的视线轴上,否则也无法得到正确的结果。例如:不对称的裁剪一张照片,该照片在裁剪后的中心点已经和原来的照片不一样。

  • 您必需细心的指定对应点才会得到比较正确的结果。

  • 将工作视窗最大化有助于指定底色图案上的对应点时的精确度。

  • 在底色图案上指定的对应点最好是模型上可以使用物件锁点锁定的点,以提高在模型上指定对应点的精确性。

  • 指定的点最好分布在各个轴向上。

PerspectiveMatch

设置视图 > 符合透视投影

Menu2

检视 > 设置摄影机 > 符合底色图案

工作视窗标题 > 设置摄影机 > 符合底色图案


顺便说一下3ds Max的类似功能:

在3ds Max中使用的命令为CAMAERA MATCH

第一步:

准备一张图片。正确匹配透视我们需要两个尺度上的至少5个点,四个点属于第一个平面,剩下一个属于第二个平面。

第二步:

导入3d模型到场景并设置上面的图片为透视视图背景。

第三步:

因为我们想要精确操作,最好将除了用于“照相机匹配”的的两堵墙以外的所有物体隐藏(选择这两个物体,右键> 隐藏未选择)。

第四步:

现在你可以放置5个摄像机点了 ( Helpers > Camera Match > CamPoint )。这个过程使用 'Snap Toggle' option = ON 非常重要。. 我们也必须考虑正确的顺序。

第五步:

创建摄像机点以后我们可以将它们指定到照片上对应的位置。 ( Utilities > Camera Match )

首先选择摄像机点(可以使用edit > 'select by name' 选项), 然后打开'USE THIS POINT' 和'ASSIGN POSITION' 并在图片上点击你想要指定的点。重复5次。

第六步:

将5个摄像机点在图片上指定以后点击 'CREATE CAMERA' 。

重要提示>很有可能你得到的照相机和图片不匹配。这意味着你创建的摄像机点不属于一个平面!删除这些点并再小心地创建一次!

现在你有了正确的照相机视角,可以进行材质和灯光的处理了。当然最后还需要一些图片处理软件(比如Photoshop)来和你的渲染进行合成。

刚开始可能会不太好掌握点的设置,联系几次以后自然心中有数了。

2008年8月28日星期四

Visual Basic 语言关键字

下表列出了所有 Visual Basic 语言关键字。

保留的关键字

下面的关键字是“保留的”关键字,这意味着不能将这些关键字用作变量或过程等编程元素的名称。可以通过将名称括在方括号 ([ ]) 中来忽略此限制。有关更多信息,请参见 已声明元素的名称 中的“转义名称”。

说明:

不建议使用转义名称,因为这可能会使代码难以阅读,并可能导致难以发现的细微错误。

AddHandler   AddressOf   Alias   And   AndAlso   As   Boolean   ByRef   Byte   ByVal   Call   Case   Catch   CBool   CByte    CChar   CDate   CDec   CDbl   Char   CInt   Class   CLng   CObj   Const   Continue   CSByte   CShort   CSng   CStr   CType   CUInt   CULng   CUShort   Date   Decimal   Declare   Default   Delegate   Dim   DirectCast   Do   Double   Each   Else   ElseIf   End   EndIf   Enum   Erase   Error   Event   Exit   False   Finally   For   Friend   Function   Get   GetType   GetXMLNamespace   Global   GoSub   GoTo   Handles   If   If()   Implements   Imports(.NET 命名空间和类型)   Imports   XML 命名空间)   In   Inherits   Integer   Interface   Is   IsNot   Let   Lib   Like   Long   Loop   Me   Mod   Module   MustInherit   MustOverride   MyBase   MyClass   Namespace   Narrowing   New   Next   Not   Nothing   NotInheritable   NotOverridable   Object   Of   On   Operator   Option   Optional   Or   OrElse   Overloads   Overridable   Overrides   ParamArray   Partial   Private   Property   Protected   Public   RaiseEvent   ReadOnly   ReDim   REM   RemoveHandler   Resume   Return   SByte   Select   Set   Shadows   Shared   Short   Single   Static   Step   Stop   String   Structure   Sub   SyncLock   Then   Throw   To   True   Try   TryCast   TypeOf   Variant   Wend   UInteger   ULong   UShort   Using   When   While   Widening   With   WithEvents   WriteOnly   Xor   #Const   #Else   #ElseIf   #End   #If   =   &   &=   *   *=   /   /=   \   \=   ^   ^=   +   +=   -   -=   >> 运算符 (Visual Basic)   >>= 运算符 (Visual Basic)    <<   <<=

说明:

EndIf、GoSub、Variant 和 Wend 仍为保留的关键字,尽管 Visual Basic 中不再使用这些关键字。Let 关键字的含义发生了更改。Let 现在用于 LINQ 查询。有关更多信息,请参见 Let 子句 (Visual Basic)

非保留的关键字

下面的关键字不是保留的关键字,这意味着可以将其用作编程元素的名称。但是,这并非建议的做法,因为这可能会使代码难以阅读,并可能导致难以发现的细微错误。

Aggregate   Ansi   Assembly   Auto   二进制   Compare   Custom   Distinct   Equals   Explicit   From   Group By   Group Join   Into   IsFalse   IsTrue   Join   Key (Visual Basic)   Mid   Off   Order By   Preserve   Skip   Skip While   Strict   Take   Take While   Text   Unicode   Until   Where   #ExternalSource   #Region

RhinoScript-first-example

这是RhinoScript101这本书中的第一个例子,目的在于讲解RhinoScript的结构。

Untitled-1

Untitled-2

*Option Explicit 语句
规定强制定义变量,否则会报错。参见Visual Basic语法

*注释

*全局变量

*主程序呼叫
Call语句。参见Visual Basic语法

*主程序
包含在Sub和End Sub之间。参见Visual Basic语法

2008年8月26日星期二

RhinoScript方法概述

所有的RhinoScript方法归类为以下类别。

类别

描述

Application Methods
程序方法

Methods related to the Rhino application.
与Rhino程序有关的方法

Block Methods
块方法

Methods related to block instances and their definitions.
与块及其定义有关的方法

Curve Methods
曲线方法

Methods related to curve objects.
与曲线物体有关的方法

Dimension Methods
尺寸方法

Methods related to dimensions and annotations.
与尺寸标注有关的方法

Document Methods
文档方法

Methods related to the currently open 3DM file.
与当前打开的文档有关的方法

Geometry Methods
几何方法

Methods related to geometric objects.
与几何物体有关的方法

Group Methods
群组方法

Methods used to manipulate groups of objects.
与使用群组有关的方法

Layer Methods
图层方法

Methods used to manipulate layers.
与使用图层有关的方法

Light Methods
照明方法

Methods related to light objects.
与照明物体有关的方法

Linetype Methods
线条类型方法

Methods related to linetypes.
与线条类型有关的方法

Material Methods
材质方法

Methods related to object rendering materials.
与物体渲染材质有关的方法

Math Methods
数学方法

Methods that extent VBScript's math capabilities.
VB数学方法

Mesh Methods
片面方法

Methods related to mesh objects.
与片面物体有关的方法

Object Methods
物体方法

Methods to manipulate general object properties.
使用基本物体属性的方法

Object Grip Methods
物体捕捉方法

Methods for manipulating object grips.
使用物体捕捉的方法

Plane Methods
平面方法

Methods related to creating and manipulating planes.
与创建和使用平面有关的方法

Point & Vector Methods
点及向量方法

Methods related to creating and manipulating 3-D points and 3-D vectors.
与创建和使用3D点和向量有关的方法

Selection & Polysurface Methods
选择及多边形方法

Methods for selecting objects or obtaining object identifiers.
选择物体或者

Surface Methods
曲面方法

Methods related to surface and polysurface objects.
与曲面和多边形曲面有关的方法

Toolbar Methods
工具栏方法

Methods related to toolbar collections.
与工具栏选择有关的方法

Transformation Methods
变形方法

Methods related to creating transformations.
与创建变形有关的方法

User Data Methods
用户数据方法

Methods related to RhinoScript user data.
与RhinoScript用户数据有关的方法

User Interface Methods
用户界面方法

Methods used to interact with the user.
用来和用户交互的方法

Utility Methods
工具方法

Any method that does not fall into any of the above categories.
任何不属于上述类型的方法

View Methods
视图方法

Methods related to manipulate views and construction planes.
与使用视图和结构平面有关的方法

Grasshopper(蚂蚱)

关于Grasshopper

Explicit History 插件出来多半年时间了,一共发布3个版本,因为McNeel公司的软件都是以动物名字命令

的,而且以前Explicit history的名字容易让人错解,暗示些特别的功能,因此重新取了一个新的名字

Grasshopper™ (蚂蚱),Grasshopper 主要是为了提供设计师一个新的模型工具,采用程序算法生成新的造

型的方法,Grasshopper是一个与Rhino紧密结合的图形算法编辑器,不同于Rhino Scrip,不需要你有任何的

程序相关知识,通过一些简单的流程方法就可以达到设计师所想要的模型.

Grasshopper官方主页

http://grasshopper.rhino3d.com/

下栽插件

下载 Grasshopper (0.3.0002)

这个版本需求 ""Rhinoceros 4.0 SR3"的支持".

安装方法

简单造型教程演示

更详细E文资料请点这里

Rhino 2D 制图模块(官方发布)

Rhino3D官方发布的6500个标准2D制图模块,包括建筑,机械,电子等各个方面

Massive library of 6500 standard 2D architectural, mechanical, electrical, and civil drafting symbols.

下载地址

Draw Order Display插件

概况

Rhino4 发布早期,所有的视图都默认使用OpenGL作为主要显示管线,然而Rhino的默认OpenGL引擎使用深度缓存绘图来绘制所有物体,包括线和面以及文字等。这意味着所有东西以一种明确规定的风格显示,也就是基于和相机的距离(深度)。因此就没有办法使距离相机较远的物体显示到前面来。

有了DrawOrder这个插件以后, 你就有了更多对物体显示的方式和顺序进行选择的可能性. 首先, 物体可以基于图层显示, 然后在指定图层, 物体可以按照用户自定义的顺序显示.

Rhino通常通过图层顺序将物体归类,但是因为之前提到的深度缓存,这种归类方式无法影响物体如何在屏幕上被显示的顺序 . 这个插件改变了这种情况,物体可以完全按照图层管理器里从上到下的顺序显示在屏幕上. 当你下移一个图层,这个图层上的所有物体将被移动到排列在这个图层之上的所有图层之后,上移图层就会得到对应相反的效果.

有时候仅仅只是给图层排序是不够的, 很多时候你要让一个物体显示到另外一个物体的前面或者后面. 这个插件同样试图解决这个问题. 一些命令允许你给特定图层里的物体排序, 让他们前移,后移,移到最前或者移到最后. 但是必须记住,这些命令只对同一图层的物体有效. 换句话说,你不能让物体显示到图层管理器里位置比它高的物体前面.

安装

下载并像安装其他Rhino插件一样简单……把插件拖放进Rhino, 或者用插件管理器加载. 然后你就可以创建一个新的显示模式或者只是修改现有的显示模式,并更改显示管线为"Display2D".

例子: (首先安装插件)

  1. 选择菜单Options->Appearance->Advanced Settings
  2. 选择显示模式,比如"Wireframe", 点击下面的copy按钮.
  3. 把模式重命名为"Ordered Wireframe" 或者其他什么...
  4. 点击新建的现实模式的"Other Settings"选项 ( Options->Appearance->Advance Settings->Ordered Wireframe->Other Settings) 更换显示管线设置为 "Display2D".

就这么简单. 现在任何一个你设置为"Ordered Wireframe" 显示模式的窗口, 就会按照图层的顺序显示. 当你在图层树中上下移动一个图层时会立刻显示更改.

不是所有着色模式(shaded modes)都很好的被支持, 无论如何, 深度测试只是在一个通过物体的基础上完成... 还没有方法让物体被正确深度缓冲(depth-buffered)又让他们显示在其他深度缓冲物体前面或者后面 . 但是, 任何3D物体(即非平面)会被深度缓冲然后因此被正确渲染.

界面

这个插件的界面就是层级管理器:

利用图层管理器和两个按钮(上图画圈部分), 你可以上下移动图层来确定物体显示的顺序. 但是上面方法可能还不是很灵活,因此还有以下四个命令可供选择:

  1. MoveForward  向前移动
  2. MoveBackward 向后移动
  3. MoveToFront  移动到最前
  4. MoveToBack  移动到最后

这些命令可以让你随意安排一个图层内的物体. 只要选择一个物体并使用上面的命令, 物体会做相应的改变. 同时有一个简单的工具栏 (下图所示) 对应上面的命令,如果你不愿意自己输入命令的话.

已知的限制

  • 当前不支持块物体. 显示结果无法预测.

*注:翻译的不是很好,有些词句可能不是很好理解,去掉废话,就是这个插件可以让物体按照图层顺序显示,一个图层内的物体又能按照指定顺序显示。这些功能在平面软件里比较常见。还有就是这个插件并不是很完善,有些情况不适用,但是基本上可以输出平面图效果的图纸。