首页 mentalray独立渲染器教程

mentalray独立渲染器教程

举报
开通vip

mentalray独立渲染器教程mentalray独立渲染器教程 mental ray教程,mi结和立版渲染 构独(一、mi格式) 结 mental ray的立版本独(standalone) 独立版本的Mental Ray~是无需任何外部件或结件而工作的渲染器~结主要得益于插.mi结言~ 是它Mental Ray与数沟与画外部据通的唯一渠道。结于结结结件相整合的Mental Ray而言~ 都必结结结结景格式的结化结程~结结结件的结景格式结结结即从画.mi格式。 由于各整合个Mental Ray的结结件~结如,画Maya、3ds max、Sof...

mentalray独立渲染器教程
mentalray独立渲染器教程 mental ray教程,mi结和立版渲染 构独(一、mi格式) 结 mental ray的立版本独(standalone) 独立版本的Mental Ray~是无需任何外部件或结件而工作的渲染器~结主要得益于插.mi结言~ 是它Mental Ray与数沟与画外部据通的唯一渠道。结于结结结件相整合的Mental Ray而言~ 都必结结结结景格式的结化结程~结结结件的结景格式结结结即从画.mi格式。 由于各整合个Mental Ray的结结件~结如,画Maya、3ds max、Softimage|XSI等都有各自不同的结景格式结范~ 因此结里使用.mi结言作结Mental Ray的结景平台。 结 结Mental Ray Standalone行起, 运来 假结已结在你windows系结下安了装Mental Ray独立版(结里以3.4版本结例)~接着结定系结结境结量两个~如, set MI_LIBRARY_PATH = C:\Program Files\Alias\mentalray3.4\lib set MI_RAY_INCPATH = C:\Program Files\Alias\mentalray3.4\include 第一结量指定个mr的shader结的路~第二结量指定径个mr的明文件。结在~在声windows命令提示符下只需结入你ray命令便可以结结用随Mental Ray渲染器了。 提示, 不同版本的Mental Ray~渲染命令的名可能不同。在安目结下到称装找bin文件结~结于3.4版本~有一文件叫做会个ray.exe~那结“ray”就是结渲染器的命令名~结于启称3.4.5版本~文件名可能就结成了ray345.exe~那结“ray345”就是结渲染器的命令名。外~也可以使用启称另 mentalrayrender命令结用渲染器~结命令的部其结就是用的来条内ray。 有了ray命令可以结用渲染器~结必结有结景文件。那结结我结先结建一来个.mi结景。 用字板新建一文~取名“写个档square.mi”~然后入下面的容,写内 link "base.dll" $include "base.mi" 注意包含$include的那一行一定要结格~不能在前面留有空格。写link用结接来base.dll~是它mr的默结shader结~而$include结结接了base.dll的明文件。结文件的位置由前面的结境结量所指定。声两个 我结在一结结就引用了base.dll~结明在下面用到结里的会shader。 接着入下面行~其含结我结以后结结结到,写几会 options "opt" object space samples -1 1 contrast 0.1 0.1 0.1 end options “opt”是options的名字~可以任意取名。你mr的命名必结用引“”括起~结是结了避免用结取双号来 的名字与mr默结的结结字相互混淆。 结景里结得有结像机。个 camera "cam1" output "rgb" "square.tga" aspect 1 resolution 300 300 end camera 结台结像机表示在结景的同目结下渲染一结square.tga结片~通道是rgb~像素比是1~大小是300x300像素。mr在结取.mi文件的结候~遇到形如camera……end camera结结的结句就知道是在定结一结像机个。不结此结结台结像机结结于“结身”结。结是因结状mr有结范~所有结像机个(camera)、光灯(light)和物体(object)的定结想要在结景中“结身”~都必结再结结形如instance……end instance的结句他结置入渲染将的结景中。那结接下快结结像机“结身”,来赶吧 instance "caminst1" "cam1" transform 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -2 1end instance "cam1"是定结结像机结取的名字~"caminst1"是“结身”结的名字。然已结在结景里结身了~那结结景里其既 他的instance就不能再用结名字了。个transform是用改结结像机在空结里的位置。来 来吧点光, light "light1" "mib_light_infinite" ("color" 1 1 1) direction 0 0 -1 end light instance "lightinst1" "light1" end instancemib_light_infinite是base.dll结里的light shader~是一结直射光。结在知道结结引用base.dll的用结了。结结光的光色是白色~方向是结吧Z结的方向。光也需要结“结身”。结灯它instance的格式似乎上与面的略有不同~不要结~mr结结行和空格不敏感。并 接下结造材结来(material)。 material "mtl" "mib_illum_lambert" ("diffuse" 1 0.5 0.2, "lights" ["lightinst1"]) end material 很结结是不是,依然用到了base.dll结里的mib_illum_lambert。注意参数"lights"的中括“号[]”里面加入了结结明的声"lightinst1"~表示结材结被个lightinst1所照亮。在mr里~定物被些光照亮决体哪灯是在材结里明~而不是在物里明。然后由结予物的材结定些光影物。材结一结结建就声体声体来决哪灯响体 暴露在结景中~不需要instance结“结身”。它 有了光~结有物了,体 object "obj1" visible group # point vectors 0.5 0.5 0. -0.5 0.5 0. -0.5 -0.5 0. 0.5 -0.5 0. # vertices v 0 v 1 v 2 v 3 # polygons p "mtl" 0 1 2 3 end group end object instance "inst1" "obj1" end instance那些在写object……end object里面的一串串字是在定结物的结点和面的信息~看不明白不要结~数体 以后结结道。来# point vectors下面的容定结了四结点~而内个# vertices结结些点结上序~最后号#polygons把结些序按一定结序排列起形成一面。注意在造面的结程结予了材结号来个"mtl"~就是上面声构体明的材结。因此必结在造物之前先结建材结。 到结在结止~差不多结有的都有了。不结mr必结要有一“根”结点~把所有明结的结像机、光和物结个声灯体 一放在结根结点上。个 instgroup "world" "caminst1" "lightinst1" "inst1"end instgroup 最后~加上渲染命令, render "world" "caminst1" "opt" render命令的格式必结含有根结点、结像机和结结。因结结景允结多根结点和结像机存在~所以必结指明渲染个 器使用结像机和根结点。 哪个 OK~结景造完成,结得保存构square.mi文件。我结的结景结结在看是结结的;结构来1,,前面结到~instance……end instance用把不可结元素来camera、light和object可结化。其结结有一结特殊元素也不可结,instgroup。结特殊~是因结作结“根”结点的结候可结~作结非“根”结点的结候结它当它 不可结~此结必结用instance可结化。结2结结楚表明了清instance和instgroup之结的结系,“group1”作结一个instgroup~结结“inst1”成结可结元素上结到根结点“并root”上。其结从instgroup的名字上就知道是它instance的一结~可以收集任意多个个instance。结里的“group1”一共结有三个instance。可以看到“你light1”作结“inst2”已结结于“group1”下~因此有必要再结到根结点没将它 “root”下。但是camera的“inst6”必结直接结接“root”根结点~同结结接render结点以指明使用结结像机渲染~结是mr的硬性结定。“obj1”一共结生了两个instance~分结是“inst4”和“inst5”。一定结个好的object~可以通结instance结成多物~就像结制一结。结里只有“个体inst5”结入“group1”~而“inst4”结然在结景里可结~但是由于有任何结结结系结入根结点~因此渲染的结象里就不存在没将它会 “inst4”~注意~一个camera只能结结一个instance。 好了~万事俱结~只差渲染了。打结命令提示符~结符指到将square.mi文件所在位置~然后结入,ray –imgpipe 1 square.mi | imf_disp – imf_disp –;注意结漏掉后面的结,的作用就是打结渲染的结像~可以看到渲染的结程。 横 OK~是不是渲染出一橙色的正方形,来个 注意, 命令行可能返回一警个告信息,“MI 0.0 warn 122001: standard startup file ray3rc not found”。结是因结mr找不到rayrc文件。rayrc文件在结渲染的结候网会个才用到。结警告不影本响你个地渲染。可以结定一系结结境结量~指定rayrc的位置来个消除结警告。比如MI_ROOT = C:\Program Files\Alias\mentalray3.4到结在结止~我结有没个借助任何工具就结建了一.mi结景~并将且mentalray的立版本行起了,独运来相信结你.mi结言也有了初步的结结。 小结结, 结着修改square.mi里的元素。比如camera的instance里的transform~将-2改成-10看看是会你它什结结果,也可以在其instance里加入transform来它灯改结结的位置。或者改改光的结色、方向~材结的结色。甚至将object结制多个instance。 mental ray教程,mi结和立版渲染 构独(二、option模结和结景结展)在上一期我结结了mi的文件格式~手结结建渲染了一并个mi结景square.mi。接下我结结结结来解mi各个模结的定结和功能。结一期首先介结Options模结。 结 Options,渲染的指结家 mr的options用如下格式定结, options "name" …… end option Options是mr结渲染结行全局操作的控制台。Options里有多可以结结或很参数数者指定~比如,采结量、模型的结分方式、结运模糊、光结追踪、投影方式、渲染算法、Global Illumination、final gathering等等~甚至可以控制通渲染以卡断及渲染结模式。 在square.mi里~我结指定了三~分结是个参数object space、samples和contrast。结在我结结结结来三在个参数mr里的用途。 mr有两个坐结系可供结结,camera space和object space。前者只是出于兼容性才存在~不推荐使用。object space表示所有object……end object定结的何都是在物自几体体己的坐结系下衡量的。通结instance里的transform~可以物在结一的你将体世界坐结系下位移、旋结或结放。若不指明object space~mr就默结会camera space。 samples和contrast是用做来呢什结的, mr是一个个数采用光结追踪算法的渲染器。在结像的每一像素上~都要投射一定量的光结(ray)来决定结个条像素是什结结色~每投射一ray~就叫做一次采结(samples)。采结的本结就是将原本结结的结景通结有限的采集结生不结结的结像的结程。结看结1, 在结景里~结像机其结就是一点~所有个采结光结都由结一点结射。而结射方向结由结平面(viewing plane)上的像素以及结像机结平面之结与离距(焦距)决定的。比如结1中的采结光结Ray1~结像机从原点出结~结结像素(4,4)~结中结色球体并广的暗部~把结中点的结色作结结像素的结果。焦距越短~结结取景范结就越结向角。在结例个子中~一共有88个当填像素;相信我,~所有像素都被充后就形成最后的渲染结像。提示, 结平面的坐结系原点在左上角~向右是x结~向下是y结~用(x, y)表示。在结1中~Ray1所结结的像素坐结是(4, 4)~Ray2结(5, 4)~Ray3结(10, 5)。 mr的samples限制了每个像素里投射采结光结的最小和最大结。samples 0 2 表示每个像素至少投射 2*min2*02*max2*2 = 2 = 1 条光结~至多 2 = 2 = 16 条光结。最小结如果是-1~表示每2x2个像素投2 射一光结。最大结和最小结建结符合下条述结系,max >= min + 2。 contrast r g b [a]用来控制超采结(supersampling)的结结level~比结相结当采结的结果超结了指定的rgb[a]结结~就结入更高结结的超采结。在square.mi中~contrast的rgb结结的三结都是个0.1~samples的结置结-1和1。结在每个像素中~mr首先以level = -1的超采结结结投射光结~即每2x2个像素投射一 level-1条并光结~且比结相结采结的结是否大于 0.1 * 2 = 0.1 * 2 = 0.05~如果条个件符合~结在结像素上结入level = 0结结的超采结。如果条并会件结是结足~超采结不无限结结~因结samples的范结是-1到1~超采结的最大level被限定在1。contrast结不建结低于0.05。 contrast可以更好的控制结像的结量~因结知道里需要它哪更多的采结光结。因此结结contrast是影结像结响量的结结~而samples只是用来两个强制采结结结的。下面的例子可以更直结的结明contrast的作用, 由于第一次采结的相结结差距很当真大~结入第二次采结~其结果也更逼近原始结片。然~结的采结点不是按照结2那结分布~但原理结似。而下面结结结是结结渲染中由于contrast结不同而造成的结像结量的差。结然异左结的结像更加结结、平滑。 Options有一个参数重要的是filter~指明用多少采结混合成一像素~是个anti-aliasing;反混淆,方法之一。filter的格式如下, filter box|triangle|gauss|mitchell|lanczos [width[height]]其中用“|”表示多者结其一~斜体号字表示结量~方括“[ ]”表示可结结。mr的filter算法就是上面列出的五结~按结算的快慢由高到低、按结量由低到高排列。比如,filter box 1.0是mr的默结配置~表示将周结0.5个离内像素距的采结按照box算法混合成一像素。个 jitter jitter jitter按照特定的算法抖没结;偏移,采结方向。如果有jitter~采结方向通结像素或将个子像素的四角。jitter的作用是结了削减结像的人工痕迹~比如,anti-aliasing。但非所有并况情都适合打结jitter功能。结定jitter结结0.0结结或1.0激活jitter功能。 task size size 结整结像分成多任结渲染~参数将个个会尤其在多结程结理器上加速渲染结程。size必结是整。比如数task size 60将结像分成若干60x60像素的子结像。一般情况参数不需要结定结~mr会自结结算。 Options结有结多~着程的参数将来随教会深入都结到。 思考, 通结以上contrast、jitter及task的介结~我结可以推结出采结量的结数算公式, 2*levellevel NUM = 2 * RES * RES + 2 * (RES + RES) + 1 + NUM (1)samplesxyxytask levellevel NUM = (2 * RES + 1) * COL + (2 * RES + 1) * ROW + COL * ROW taskyx (2) COL = [ RES / T ] - 1 (3)xsize ROW = [ RES / T ] - 1 (4)ysize 结里推结步结就不结了~大家可以结结结筋。其中level表示采结结结~RES和RES代表解像率xy T是task size~方括在上的作用是取最接号 数学 数学高考答题卡模板高考数学答题卡模板三年级数学混合运算测试卷数学作业设计案例新人教版八年级上数学教学计划 数近的整~而NUM代表由于分成多任结sizetask 而重结投射的采结量。数 比如将square.mi中的采结结结结定结,samples 1 1;最大和最小结相同是结了硬性限制采结数量以方便结结,~task size结48~那结采结结量就是数367236~其中重结采结6035条~占到必需采结量的数1.67% 那结如何结结结些据,在渲染命令中加入数呢-v参数可以结mr结示结程、警告等信息。 像结结,ray –v on –imgpipe 1 square.mi | imf_disp –~那结在命令行返回的信息中可以找两到结结行, RC 0.0 info : type number per eye ray RC 0.0 info : eye rays 367236 1.00 结 结展你的结景 是不是结得结结渲染一结正方形很乏味,OK~接下结我结在来square.mi结景中结建一个体球。不结要手结结入几个百结点和面的信息结然不结结~所以我结结里得借助一下外部建模工具。 以Maya结例~在结景中建立一个径半结1的polygon球体体况~在结中结球的情下打结菜结,File->Export Selection~File Type结结mentalRay~File Format结结ASCII~Tabulator Size填2就可以了。Output File Per Frame和Export File Paths后面的勾结去掉~结结Export Selected Items Only~在下面并激活的列表中只勾结Objects~意思是结结结出Objects内并容。然后命名结出;结里取名sphere.mi,。 用字板;不是结事本,打结写sphere.mi~到以你会找group结结~以end group结尾~中结包含了结结的一串据~结正是多结形数体球的定结;不结是不是使用Maya~只要结出的是mi格式~那结一定可以到结找些据,。数将group…end group以外的所有据都结数除。 打结square.mi~同结到找group…end group~结在一定想到了~只要结你将才sphere.mi中的容内在结里之与来体数替结~就可以把原的正方形结成球了,不结结结冗结的一堆据放在square.mi里~结结将来参数找来会很、渲染结结~起麻结。结结得第一期结结使用$include引用base.mi文件结,$include不但可以引用shader的明文件~声凡是遵守.mi格式的所有容都可以任意分和引用。结里我结把内拆体球的数独拆来据结分出~因此只需要在square.mi文件里引用sphere.mi文件就可以了。像结结,object "obj1" visible tagged $include "models/sphere.mi" end object instance "inst1" "obj1" material "mtl" transform 2 0 0 0 0 2 0 0 0 0 2 0 0 0 0 1end instance 注意$include要结行~ 结写sphere.mi存放位置的描述可以是相结或结结路。径tagged的作用是结结~表示结物的材结结体承自instance…end instance~因而不必在物的定结里明材结。由于体声instance和instgroup可以相互嵌套而形成结结结~所以在instance里明材结存在结先结的结结。结结相结结声靠低的;更近物定结的体instance,取会代结在上游结结的instance中明的材结。如声果想要避免结结机制~结添加一行override即可。transform的作用是物结小将体2倍。 最后~改结一下光的方向灯并增加一结结光。 渲染结景, mental ray教程,mi结和立版渲染 构独(三、材结和结结) 结 Material & Shader Type material(材结)的定结用如下格式, material "material_name" shader_list ...... end material 斜体字shader_list表示在那位置结结定结好的个填写shader~可以看前参两期是如何定结material的。shader是mr的重要元素~由C或C++结言结而成~写mr在渲染的结候结结结用结些shader来决体定物的外结等特性。用更程序化的结言结~来shader其结就是函数数参数运~函的本结就是结入结结结算结出结果。mr向结景投射采结光结~一旦结中物~便结用结物体体material中的shader~一般情况下返回一结RGB结作结采结的结果。shader不结结可以结用在material中~不同结型的shader结可以用作不同用途,Shader结型描述 Material Material shader是mr最主要的shader结型。只要采结光结结中物就结体会 shader用。它Material shader结结放入material定结中~如下, material "material_name" shader_list end material 用于结建各结光源~当material shader中引用了光灯instance~就结会触 light shader的结用~此外结结结它投射结影光结。Light shader放入light定 结中,Light shaderlight "light_name" shader_list end light 当结影光结(shadow ray)与体物相交结~结结用shadow shader。shadow shader结结置于material定结中~此结material shader必结存在。Shadow material "material_name" shader_listshader shadow shader_list end material Texture shader一般不被mr直接结用~的作用是结建结结结它理、结结坐结~Texture shader将结果结结到其他结型shader的中。参数 Lens shader可以用改结第一来广代采结光结的方向、结色或其他信息。如角 结结、结等效果都可以用lens shader结结。Lens shader放在camera定结 中,Lens shadercamera "camera_name" lens shader_list end camera Environment shader可以放在camera或(和)material定结中。在当 camera中结~表示第一代采结光结若没体有结中任何物结结用结shader。用当 在material中结~表示物从体投射的反射、折射光结(第二代或更高)没有结Environment 中任何物结结结用结体shader。shadercamera "camera_name" environment shader_list end camera mr的shader结型不结结只是上述列表所示~结包括结如,volume shader、photon shader、displacement shader、geometry shader、contour shader、output shader、lightmap shader等等。 结 Texture Mapping Texture mapping结结结~就是结像来将体映射到物上。那结mr中如何结物结结结, 体呢 首先结片结入将mr中, color texture "image1" "textures/caution.bmp"注意结句结不是在定结并shader~可以把看作一结你它个型结color texture、名结image1的结量~其结结结片的路。径除了color结型~mr结允结以scalar和vector结型结入结片。color texture结结的写法在mr中是比结特殊的情况。 接下要结结结来texture构几体建结结坐结空结~结片要想“结”到何上就必结通结坐结系映射。shader "tcoord" "mib_texture_vector" ("select" 0) "mib_texture_vector"是mr的结准base.dll结里的shader。参数"select" 0表示采用物自身的体UV坐结;物定结中一体般含有结点坐结、UV坐结等信息,。也可以结结其他的坐结系~比如直接结点将坐结作结结结坐结;mr自结的mental ray shaders guide手册中~Base shaders->Texture Space Mapping章结结结介结了如何定结结结空结,。结个tcoord此结结有任何用结~结结是一结结没个坐结系而已。shader "colortex" "mib_texture_lookup" ("tex" "image1", "coord" = "tcoord") 结在colortex将image1和tcoord结系起了。来mib_texture_lookup的作用就是结片按照结定的将坐结系结行映射。以上两个shader都于属texture shader结型~由于mr很少直接结结结结型的shader~因此结里其结结到结如将material shader的中。参数 material "mtl" "mib_illum_phong" ( "diffuse" = "colortex", "specular" 0.4 0.4 0.4, "exponent" 60, "lights" ["lightinst1", "lightinst2"] ) end material material的结建不再敷述~结心留意一下等的使用。号colortex结结结diffuse参数属中~也可以结结结任何于color结型的;如参数specular,。 注意, colortex结是texture shader~但也可以直接放到material中而不必拘泥于结结到里参数 material "mtl" ="colortex" end material 不结渲染的结果将没有明暗结化~因结texture shader一般不光的结参与灯算~结结结出texture的结色。如果想要光信息~就必结结结到灯material shader或其他考结光灯因素 的shader中。 结 Shader link 注意到上面shader的定结以与往有什结不同结,是的~在定结的结结结是出结字符shader~并随且后结定了命名。也不像以往shader那结放在material的定结中~而是结存在独的shader。结结定结shader的方式叫做named shader;命名shader,~而以前的方式叫做anonymous shader;匿名shader,。匿名shader只允结出结在有shader list的地方~而且只能结用一次~如果用结在不同的地方定结相同的匿名shader~mr会结结是在定结新的shader。named shader结有结结的结没束~一旦定结就允结在任何地方重结利用。需要注意的是~named shader无结放在shader list里结是其他shader的里都要用等结结。比如下面的参数号"mat1"和"mat2"是相同的, material "mat1" "mib_illum_lambert" ("diffuse" 1 1 1)end material shader "myshader" "mib_illum_lambert" ("diffuse" 1 1 1) material "mat2" ="myshader" end material 既然named shader可以在任何地方重结利用~那结就可以其结结结将shader的中形成参数shader结;shader link,。其结在上面的章结中我结已结建了一构条shader结~tcoord作结结量结结结colortex的coord参数~image1结结结结tex参数。tcoord之所以能结结结结coord形成shader结~是因结mib_texture_vector的返回结结数型是vector~结与coord参数的结型是一致的~image1的结型与tex的结型也都是color texture。因此shader结形成的必要件是结接条两数端的结结型必结匹配。tcoord结结结coord结所用的等不能号省略。但是image1与tex之结结不能有等~结是因结号image1不于属named shader~而是等同于结的结量。数 提示, 通结Mental ray shader guide手册可以结结到mr结准base.dll结中所有shader的明以声 及参数的含结。比如在Base Shaders->Textures章结的第一个shader是, color "mib_texture_lookup" ( color texture "tex", vector "coord" ) 可以看到mib_texture_lookup返回的结型是color~参数tex的结型是color texture~参 数coord的结型是vector。 结1示意了texture mapping章结的shader结接, 结 Mid-map OR Pyramid Map mr提供了结两Texture Filtering方法,一结是使用filtered texture~一结是另elliptical projection 方式。结方式都两基于pyramid map。 那结结什结要texture filtering呢,pyramid map又是什结, 当mr从个并体个体个即从像素的四角投射采结光结结中物结~结四交点在物的表面大致结成一四结形~像素屏幕空结;screen space,投射到物的结结空结;体texture space,。在结结程中必然结生下列三结个会情况之一, 1. 几个像素;pixel,投射到一结结像素;个texel,空结~结结情况叫做texture magnification。 2. 一个pixel结结一个texel~最理想的情况。 3. 一个pixel投射到多个texel~结生texture minification结象。 提示, 在结里Screen space下的像素叫做pixel~就是我结常结的渲染结结生的像素。texture space下的像素或结结的像素叫做texel。 结2展示了第三结情况~pixel投射到texture space结覆盖了几个十texel。物的当体与斜面采结光结结近平行结就结会常结生texture minification结象。 Texture minification的直接结果就是aliasing~出结结结或即两个斜结等人工痕迹。结是因结pixel之结跨越的texel太多(或结结的结率结高)~结致结像的不结结~使平即决均周结像素结也无法解。例如结3的结端出结了明结的波斜状结。 Texture filtering的用意就是解决aliasing结结~如果投将框内射的所有texel取平均结~那结就可以消除高结结理结的来aliasing~不结结算所有texel的平均结是很浪结结结的方法~因此Pyramid map的原理是结先存结不同结结的结结结像~比如第一结结结结像是在原来个结结的基结上每四结近texel平均混合成一个texel~形成一结新的结结~但面结是原来的1/4~然后在结结新的结结上结结结结~直到最后形成一个texel~结合成pyramid map~意即金字塔式的结结结结。 当mr渲染的结候~首先估当算前采结像素投射到texture space下的比率~比如前像素当映射了4个texel大小~那结结比个率就是1/4~mr便结结pyramid map中的level = 1结作结采结的结结。比率越小~就越结向于结结pyramid map的结端。不结结结情少巧况很会碰数两结结某一结~多比率结于某结结结之结~此结mr会插运来两结行结算融合结结结结结。 Pyramid map结省了大量用于结算texel平均结的结结~不结结于大型结结而言~pyramid map的结也非体会常结大而不易结取。mr的pyramid map格式的结展名结.map~其提供的imf_copy工具可以方便的生成pyramid map。结pyramid map的结取用如下格式, local filter 0.8 color texture "tex1" "pyramid.map" filter参数来是必需的~用激活pyramid filtering。local表示本从地结用结结。 结下结texture.mi等相结结景渲染结结。并 mental ray教程:mi结 构和独立版渲染(四、灯光和造影) 结 Lights 灯怕从光恐是三结制作中最重要的结结了~结一期结始我结结结结解mr中的光、结影、灯Global Illumination和Final Gathering。 首先介结mr中最基本的三结光,灯directional light;直射光源,, point light;点光源,和spot light;结形光源,。mr在定结直射光的结候必结指明方向参数direction~point light必结用origin指明其位置信息~而spot light除了需要以上~结必结指明两个参数spread来灯描述结形光结结的角度~结些都好理解。就像结结, light "light_spot" "mib_light_spot" ("color" 1.5 1 0.63, "cone" 0.94) origin 4.68 6.93 1.56 direction -0.66 -0.72 -0.22 spread 0.89 end light 上面定结了一个spot light~参数origin的坐结是世界坐结系~spread使用的是半角的余弦结~所以范结是1到0;比如90度的结角~spread结结cos(45)=0.707,~在本期下结文件中的lights.mi文件示范了结三结光的定结~以灯灯及包含了结结的光结景。由于上期结到如何在mi中搭建引用结景并模型~不再结述。结里只结出渲染结果, mr允结将point或spot light结结成面结光源~而结只需要在定结光的结候加入相结的可~就像前灯参数即 面定结spot light一结。mr支持默结的矩形、结面、球形、柱体状四结形的面结光源。比如把结才的spot light结成矩形光源, light "light_spot" ...... visible rectangle 1 0 1 0 1 0 10 10 end light rectangle就是矩形的意思~结其后是向量随两个坐结~分结描述矩形的结(1 0 1)和结(0 1 0)~最后两个数字10代表u和v方向上的采结量~共结数10*10=100条状。因结面结光具结形特征~不同部位结射的光结物造成不同的影~所以必结结定结面结光体会响数源的采结量~取平均得到受光结。visible参数告结mr结面结光个源可结。 提示, 另状外三结形面结光源的结定结里就不一一列结了~更多结结结结结Mental ray reference guide手册Scene Description Language -> Scene Entities -> Lights章结。 如果用结想要做一个灯状怎呢泡形的面结光源~结结做,幸好mr提供了何面结光几体将源~用结可以任何形的状体个灯灯模型作结结光。要想结结结一功能也非常结结~首先像先前所结结的那结得到一泡模型~然后在光定结中使用参数object引用结何就可以了,不结注意~何面结光个几体几体源只能结用在point light定结中。 light "light_bulb" "mib_light_point" ("color" 1 1 1) visible object "bulbinst" 10 10 end light “bulbinst”是在“light_bulb”之前就定结好的何~后面是几体数采结量。不明白的地方可以结心 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 下结文件中的lightbulb.mi文件。下面是渲染结果, 结 Shadow map 没体来会来——有结影~物看起有“结”的感结。我结先看看最结结的造影技结shadow map。 想要在mi结景中激活shadow map会比想象中麻结些~需要结结如下步结, a) 在options中打结结影和shadow map结结。 options "option_name" ...... shadow on shadowmap on end options b) 在light shader参数灯中和光定结中激活结影。 light "light_name" "light_shader" (...,"shadow" on) ...... shadowmap on shadowmap resolution 512 end light c) 最后~在object或instance定结中激活结影。 instance "instance_name" ...... shadow on shadow 2 shadowmap on end instance 步结a用来个控制整结景是否投射结影~如果shadow off~结便即步结b和c都存在~结景里也不有结影会。步结b和c都是分结结结某一光或物灯体来激活结影。shadowmap resolution 512的含结是结算512x512像素的结影深度结。步结c中的shadow 2表示结instance下的物只接体受投影~1表示结投射结影~3表示两者兼有~0结表示结结结影。 一般结~来灯若要结光投射结影~步结b中light shader的参数shadow必结打结~但结结结结结如 mib_light_infinite、mib_light_point、mib_light_spot结结mr的默结shader而言。如果用结自己结写的light shader内部强制打结结影结算~甚至不提供shadow参数~那结就无需结结light shader参数结个步结。 仔结想想~以上三个步结都可以在Maya或3dsmax结结三结结件中到结结的~所不同的只是结件提找参数供了交互界面以及更加自结化。 提示, mib_light_infinite、mib_light_point和mib_light_spot的所有看参数参mental ray shader guide中Base Shaders->lights章结。 结 Raytrace shadow shadow map往往在大结景或需要表结微小物的结影结结得体从力不心~结结raytrace shadow结可以完全结任。raytrace shadow结名思结~利用光结追踪来灯结得结影~而无需事先生成一结光角度的深度结~不结代价是更大的结算量。raytrace shadow在渲染中的结程是结结的, 首先由结平面投射eye ray;第一代采结光结,~结中物体并交于点M~后由结点向光随灯L投射light ray并结用light shader~然后再由L向M点投射shadow ray~如果在抵达M前结中物~如结体4中的P点~那结M点结被判断结结于结影中~其返回结eye ray的结色结也就偏暗。 而shadow map的渲染结程比结结结;但结会很算量小,。结看结5~步结1结得一结光方向看结从灯去的深度结~结结结结的是物表面体离离距光源最近点的深度结~越结近于白色就表示距光源越近~黑色结相反~接着在步结2中结象机方向结从始投射eye ray~假结前当采结结中点M~结结算出M到L的距离d1~然后结入步结3~将M->L方向映射到shadow map中~到结方向上结结的象素点;找D结中结点所示~结象机方向看结从去就是C结中的P点,~而结象素点结结的深度结就是P->L的距离d2~最后~比结d1和d2的深度结~若d1大于d2~结明P点位于M->L之结~遮结了射向M的光~结M结于结影中~若d1小于d2~结明P点位于M->L之后~M点接受光照。 比结结渲染两原理~他结都需要投射eye ray~不同的是raytrace方式需要投射shadow ray~而shadow map方式需要生成深度结和结找M->L结结到深度结中的P点。乍一看shadow map比raytrace方式步结更多、更慢~但其结不然。如果结景结结~渲染器就需要很将shadow ray跟大量三角面作求交算判运来断体尽是否结中物~管mr结有BSP结加构来从来速结结程~但结算量上看结比shadowmap方式要大。深度结的生成结无结作任何求交算运找~结P点也相结容易些。因此~raytrace方式正是有了交点运算而比shadowmap方式慢~但也更精确。 激活raytrace shadow要比shadow map结便得多。只需把前面的三个步结中去除有结shadowmap的结结可。 即 下结文件中的shadowmap.mi和raytraceshadow.mi文件可以结比看~来两熟悉结投影方式的结定和结结。 结 Blur shadow 真体会结的光源都有结~因此投影多少都有模糊。前面的shadowmap和raytrace shadow都非常清晰几没结利~结影的结结乎有模糊。 mr提供了结两模糊结影的方式。第一结基于shadowmap~采用可结定大小的矩形结框模糊shadow的方式~第二结基于面结光源的raytrace shadow。后一结方式比结结结~但效果也最接近自然。其原理就是多次采结面结光源投并射shadow ray~返回的结将个果取一平均结。blurshadow.mi结景采用了面结光源来模糊结影~渲染结果如下;面结光源的采结率达到了30x30,, mental ray教程:mi结 构和独立版渲染(五、Global Illumination)结 结什结有会全局光照, 自然界无结无刻不存在着光。光可以直接自结光;直接照明,~也可以结接自来体来反射、折射、透射;结接照明,等等。因此结于背光的物看起不完体来会全黑暗~而是被周结的反射光所照亮。所结全局光照~结即两与理直接和结接结光照的方式~之相结的是local illumination~结方式只考结直接光照而忽略结接照明。 结比可以看到~globillum方式在会体来真背光结结更多结结~结结像看起更加结而自然。 结 Local illumination结结了, 从没真技结角度结~结有结结;也结早结的事情,。结于结算机而言~要得到结、结量上乘的结像~使用globillum是很它很体消耗结结的算法~需要考结结结的物相互结光的反射、折射等结象。今天的中央结理器在globillum面前结得结是老结。结于结结结迫~或是工作量大的 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 ~使用globillum就结会从展结慢。结结角度结~也结根本就不结结。结结会当家需要自由~globillum结打光结成只需按一按结就个全自结完成的同结~也 结可控性大大降低~而面画异效果不可控无于无法结作。因此globillum只可能作结结助打光的方式增加结像的结感。真 结 Mental ray的全局光照 mr结有结两全局光照方式,global illumination和final gathering。结结光照方式在两原理上可结大相径庭。结里先结结前者。global illumination首先光从源结向结景投射光子;photon,~所有光子的行结遵循真当达数结的物理原理~或者被吸收~或者被反射、折射等等。结景中的光子到指定量后就形成一结光子结;photon map,~在后的渲染中结取结结光并随来决个子结定每一采结点的光照信息。global illumination方式像在很真模结结世界中光的结播。 结2中光源结结射的光子散布在结景中;白色斑点,~部分光子被结面反射~因此在结子的结结结聚集了结密集的光子。白色斑点结成了光子结~即photon map。注意结结程是在渲染结个随始前完成的。后在渲染中结取photon map来估算采结点的光照信息。 假结前渲染的是结当3中的A像素点~那结mr结取photon map~在指定半径内黄估;结中圈所示,算光子的量~结结些光数从子加结取结而得到结点的光照信息。结3中B点半径内数的光子量比A点要少~表结在渲染结果上就是比A点要暗。如下结, 结面结结由于光子密集的结故结得更亮。而在结真况情中也是如此。 结 渲染Global illumination, 打结光结中附结的结景gi.mi。注意结结引用了physics.dll结和明文件声physics.mi。因结globillum属于结结精确的物理光照模结~所以最好配合mr自结的physics材结渲染。结了激活globillum功能~必结具结以下步结, 1) 在options中打结相结的globillum结结, options "option_name" ...... globillum on end options 2) 在光中结射灯globillum光子并指定光子能量, light "light_name" ...... energy r g b exponent exp globillum photons store[emit] end light 3) 最后~在材结中加入photon material~其作用是反射、折射或吸收光子, material "material_name" ...... photon "photon_material" () end material 根据上一期的结结~第一步很好理解。在第二步中~energy用指定光来子的能量~能量越大~结结播越结。而exponent表示能量结播结程中的衰减真况离减个。结于结情~光能按照距的平方衰~那结结结结结,exponent 2。默结结结数1~不即减衰。globillum photons用于指定光子数个数量~第一整表示结景中存结的光子数个数数量~第二整表示结射的光子量。比如,globillum photons 10000表示结光灯持结结射光子直到结景中存结了10000粒光子结止~与globillum photons 10000 0等同~因结0暗示有上没限。而globillum photons 0 10000结表示不管结景中存结了多少光子~结光只结射灯10000粒光子。 photon map的生成必结依靠体没吸收光子的材结~如果结景中所有物的材结都只能反射、折射光子~而有吸收光子~那结结景中就不有光会来属子存结下~光子结就无法生成。吸收光子的材结往往于漫反射结~ mr在其physics.dll结中提供了配结的光子shader。如gi.mi结景中所使用的dgs_material和dgs_material_photon, material "material_name" "dgs_material" ("diffuse" 0.2 0.5 1, "lights" ["pointLight1"]) photon "dgs_material_photon" () end material 注意dgs_material_photon没填写参数有~mr结定出结置空的结结参数采用上面shader的相同参数。dgs_material只结定了diffuse数结~所以dgs_material_photon的作用就是吸收光子;diffuse属于漫反射,。mr结提供了一结物理材结,dielectric_material和dielectric_material_photon~用来模结玻璃之结的高反射、折射结象。但是结结材结不能用于吸收光子;dielectric_material_photon只用来很控制光子的反射和折射,。如果结景中结结材结的比重大~那结结于全局光的模结是危结的。 gi.mi结景渲染的结果如下, 不结结结在你会体体况近结结色结的结结上~结结有一些弧形光斑~中心球的暗部也有相似的情~结是因结在第一步中我结有指定一没个参数重要的,globillum accuracy~因此mr自结结定了结;结个参数个倒不失结一好方法,在渲染结打结verbose信息~捕捉到mr自结结定的结~然后再依据结些据结整数数参更合适的数将,。下一期我结着重结解如何结结globillum accuracy。 mental ray教程,mi结和立版渲染 构独(六、结结Global Illumination) 结 globillum accuracy options里的globillum accuracy参数是结结基于光子原理的全局光照的结结。根据上一期文末结出的渲染结果~我结可以看到面中有结多明画暗斑的出结。结是globillum accuracy参数当结置不的结果。globillum accuracy格式如下, globillum accuracy N R 其用意是在渲染中控制光子的估数算量。mr在渲染期结结算物表面的体会采结点结~结取结先生成的photon map光子信息~结以结点结中找径内心在一定半范结的光子~然后根据结些光子结算采结点的光照 ;参考上一期的结2、3,~结似于结像素的结结;filtering,。由于着光随数会子量的增多~渲染的结结也增结~因此结景中的光子往往只能到结达会很没密集的分布~而结有多地方有光子信息。结就是结什结需要用一定范结的光内来估子算采结点的光照信息的结故。 globillum accuracy中的N用定结光来决找数子量的上限~R表示所结半径上限。mr估算光子信息的结候~首先结小的从径内数达半算起~如果结范结的光子量不到N~结结大搜结的半径~反之亦然~直到结足N或R中的任何一件个条即来停止搜结。结结一~结globillum accuracy的控制结涉到结两况情,1. 半径R相结结大~那结N结成结限制件。意在到条即达R上限之前先到了达N的光子数量。结结情况区区况即结生在结景中光子密集、结结明亮的域。而在光子稀少的结暗域~情结结好相反~便搜结半径达到了R~也有可能无法结足N数区估量的光子。结就意味着,在明亮的域~算半径会区丰径清晰比黑暗的域更小~因而结结也更富;半越小~光信息就越~反之结越模糊~结结1,。同结结意味着,如果整提体高photon map的光子存结量~结数估径会算半也相结结小。 2. N相结结大~结R成结限制件。因结有可能到条没达N数量的光子~所有无结在明亮结是黑暗 的区估径将达域~算半都到上限R。此结如果整提体高photon map的光子数会减量结少 noise光斑。 一般情况将下~先R结结结小的结而N保持大~数待结得结意的R结后再逐步减小N。结得注意的是~结大的半径会减结然少noise光斑~但同结会减模糊光子信息;下结,。结了少noise又保结结结~结需提高photon map存结的光子数个数达几量;结于高结量渲染~结结往往到十万甚至上百万,。结 Tuning Global Illumination 在结结操作中~我结可以借助mr渲染结返回的结程信息来断判global illumination的各结结定是否合适。 比如本期下结文件中的gi_tuning.mi的第一行是, verbose 4 表示渲染中结示结如结结、警告和结程等信息~如果是5结结结示渲染结度的百分比等信息。2只结示结结~3表示警告信息。如果不想在.mi文件里激活结结功能~也可以使用命令行, ray -imgpipe 1 -verbose 4 gi_tuning.mi | imf_disp - 如果结景中不指定globillum accuracy~mr会参数找数自结结定结。在结程信息里我结可以到结结的据,RC 0.0 info: option: globil. accur. 500RC 0.0 info: option: globil. radius 2.42127即N=500~R=2.42127。结得注意的是~结个径随半往往结景的大小而结化。拿gi_tuning.mi结景结例~mr在结程信息中返回, RCB 0.0 info: scene diameter: 55.596294scene diameter表示结景的直。可以看到径mr自结将R结结整结景直的结个径1/23。但是mr不可能知道结景的结结程度~一方面~另径条几半越大模糊越结重。因此在结结结多的结景中;结如结结的形结结~结碎的何体个径径另个等,~结半需要用家酌情结结更小的结~而在结结结少的结景中~半结可以偏大。外一重要的信息是photon map的光子数量, RCGI 0.0 info: optimizing access to globillum Photon Map with 100013 photons 可以通结结定光结射的光灯数来达子到控制photon map的目的。最后~结需要知道options里如下参数,photon trace depth reflect [refract [sum]]作用是控制光子反射、折射的深度。 有了以上信息和~我结结着结结参数gi_tuning.mi结景。首先globillum accuracy半基径数本不结~光子结结三千~光的光将灯数子存结结结十万~光子的反射深度结结2~折射深度结结0;本例中有没折射结象,~光子能量结万,两 options "myoptions" ...... globillum accuracy 3000 2.5 photon trace depth 2 0 end options light "ptlight1" ...... energy 20000 20000 20000 globillum photons 100000 end light 渲染结果如结2-A所示。可以看到~投影区域结暗遮盖了结结。结结结等同于,增大光子的反射深度~或增大光子的能量~使得投影区达个数域可以接受到更多的光子。不结结结~光子能量到四万是一合适结。由于反射深度比结消耗结算量~所以不做修改。渲染结景如结2-B。 OK~投影区随来域提亮了不少。不结结结之而~位于a、b、c、d附近的结面以及中心球体的底部都有结状翻暗斑出结。结成技结结言就是,增大photon map的光子数减~或小globillum accuracy的R结~使得暗斑提亮。 注意, 结状估径径将区参与区暗斑是由于算半结大结致的~因结大半周结低密度的光子域也结算~使得暗域超出了正常范结。结与常结的noise光斑是不同的~如果结景中出结结结光斑~结一般是由于globillum accuracy的R或N结结小结致的。 反结结结结明R=1.8~photon map的光子数达到500000是结结理想的结果。结结结有一结结~结个2-B中b区结色结的体底部结亮~结是由于光子的分布不均结致的结果。那结如何结photon map看起来呢更合理, 结 Diagnostic Modes mr提供了结光子分布的结断模式。我结可以据此了解光子的密度和结射等信息。在options中激活结断模式非常结结~格式如下, diagnostic photon off|density|irradiance N off用结结结结来断模式~density表示结景中结位面结的光子密度~irradiance表示结射度~三者结其一。N表示最大的密度结;100%,~结景中即达区将凡是到结密度的域结示以结色~超结的以白色表示。而低于结密度的区从黄区域~按百分比高到底分结以结色、色、结色、结结和结色分。 比如上面的accuracy结结3000 1.8~结位面结的最大光即内数子就是3000/(3.14* 1.8*1.8)=294.75。结结断模式结置如下, diagnostic photon density 295 渲染结果如结2-C所示~结像以结色结主~少有结色。结结明光子结密集的区体域主要位于右结结上。而由于结结景不是密结空结的结故~结致所有结结部有接收任何光体没子;结结色,。因此我结可以在结景上方加一片反光板~使得部分光子可以分布在结的结部体并重新布局photon map。渲染结果如结2-D。 结在光子分布基本结足要求~并将况且密集重心移向了地面~结是最理想的情~因结地面接受光源的直接照射~如果地面偏亮可以通结结结的降低光照到平来达来衡光比的目的。而结结操作中~光照由原的(3,3,3)降低到(1.5,1.5,1.5)~结2-D比2-C更少减了结色的结象结明~在photon map光子结不结的数情况匀下~新的布局更加均~因而光能也需要降低到16000以避免曝光结渡。 另断区达一方面~结结色结主的结象结结明~大部分域的光子密度都不能到结位面结295。根据上面globillum accuracy章结所述的第二结情况~此结R结成结限制件。但条找介于之前已结到合适的R结~因此结里的N结有大的很降幅空结。最后我结结定在N=1400左右;如果N结结小出结会noise光斑,~并且比N=2000结结4秒结的渲染结结。结2-E结示了最后渲染的结果。 结结下~最来状体另困结的结结就是结理结暗斑。结一方面由于结景的特殊性;结结折结于突兀,~一方面不得不 减小R结来消除暗斑~结致photon map光子数的结增。因此结了模结结结diffuse结景的全局光照效果~结结 使用photon map会从比结吃力。下一期结始我结介结final gathering~后之随将与photon map合并使用加来速全局光照的模结。 mental ray教程:mi结 构和独立版渲染(七、Final Gathering)基于photon map的global illumination可以模结结的光照结境~但是非真常消耗结源~结一期介结mr的一结另决全局光解 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,final gathering。;下文以fg代表final gathering~gi代表global illumination, 结 Final Gathering fg的原理是结定的从内并将确采结点出结~在结点法结方向的半球范结投射新的光结~结些光结所定的周结结境的亮度、结色等信息作结结采结点的光照信息。结结的采结点叫做final gathering point。如结1所示。当结1中投射的fg rays数量越大~结算fg point就越结结。因此在结结渲染中不结并会个每像素结算一遍fg point~而是每隔一定的距离没结算一次~而那些有fg point的地方结采用结的方插法得到。fg point同gi的photon map一结~都是在渲染之前结算完成的~而结插fg point结是在渲染中结行。结2是fg渲染的结断模式;options中diagnostic finalgather on可以激活fg结,~结色点表示渲染结断始前的fg point所在位置。 你可以看到~mr在结折结强的结结区会域结算更密集的fg points~因此fg比起photon能更好的结理结角区插域。在结算结fg point结~如结中的点~结在结色黄区内径域;半由用结指定,收集结色的fg points并通结一定算法得到点的光照信息。 黄 fg只能结算含有diffuse;漫反射,的结接照明~而光的specular或glossy反射、折射结象只能通结photon来模结。因此fg特结适合结用在diffuse结化不大的结景中。 在mr中激活fg非常结结~只需在options中打结相结可,参数即 finalgather on finalgather accuracy N [R1 [R2]] finalgather accuracy中的N表示在半球范结内条投射多少光结。R1表示结结插找算结结fg points的最大半径~R2是最小半径。 半径决的结结定了在渲染之前fg points的分布密度~半越径小~密度结越大~如结2中结点的分布。结得注意的是~mr不允结结于会稀疏的fg points分布。一般结~在来径内半范结fg points的量结在数20以上结像就可以接受~但好的结依然取于结景的结结程数决从找度。我结可以渲染的结程信息中到结些提示,RCFG 0.2 info: depth #finalgather pointsRCFG 0.2 info: 0 13804 RC 0.2 info: on average 48.28 finalgather points used per interpolation 在上面的结程中~13804表示fg points;结点,的结~而最后一行表示平数个插运均每结结算用到了48.28个fg points。 我结以上一期相同的结景结例结gi_fg_tuning.mi结行fg结结。结里引入fg的主要目的是加速全局光照保并留一定的结性;真即fg和gi同结使用,~结结结序结结先是fg而后gi。结是因结当两者同结打结结~mr结全局光的算法与独结结使用gi是不同的。在后一结情况当下~eye ray结中结于直接光照的物表面结结光体并子~那结光子信息和光灯会体响强度相加结物结生影~而fg和gi同结使用的情况当下~eye ray结中受光面并结结光子~那结光子不被结会内算在;caustics光子除外,~此结光子结只在一结会况即当情下起作用~fg rays;结1,结中物结。结结的机制结体会独受光面比起结使用gi结得更暗~或者结~此结的gi主要结背光面起作用。因此结结将fg作结第一步可以先明主光的确强度~而结接光照留待后一步结行。 fg的介入可以结gi的光子数减量结;一般降到10%左右,~我结可以看结参3B~由于gi光子数量少而结生的光斑~借助fg可以好的很消除掉;结3C,~结就是加速渲染的主要原因。结从3中结可以看到~背光面主要依靠gi提亮~而受光面结主要依光的自身靠灯另强度。外~gi光子少数减~globillum accuracy也要相结结整;上一期有结结结介结~结里不再敷述,。最后~通结比结结使用独gi的情况并加上光子结和fg points的生成~渲染结结由原来的1分09秒减少到42秒。 在结使用独fg的情况会很下~结像通常呈结柔和的感结;结似于occlusion,~但多结结很来很家结得结结看起漂亮。因此究竟结不结同结使用fg和gi~取于结决来来真演和结结指结的要求。一般结~要结结像看起更加结~结结兼者并两笔独。但者建结不要结使用gi。 结 Caustics 由光的折射和反射结生的光结结聚叫做caustics~结结生活中结可结~如结随4。 fg无法模结caustics结象~只能通结光子捕捉来。在mr中~caustics和gi是完全独两个尽立的结程~管他结都通结光子生成~但其光子结是分结存结的。在mr中激活caustics与globillum非常相似~结结方法也乎一结~结看下结文件中的几参caustics.mi结景~其中结涉caustics的结结行用“#<<”符在行号末结出~渲染结果由结5结出。 需要注意的是~caustics是由高反射、折射的物生成~结结物不存结光体体会子~因此必结由结有diffuse参数体来另的物吸收。外~结射caustics与globillum光子是同一结光~但结了结化渲染~结好的方灯法结结是结结结生caustics的物结用一结结光~结定合体独数响个适的光子量和能量~同结结了不影整结结景的光照而 将光强度结结0。 本期一结出并gi_tuning.mi、gi_fg_tuning.mi和caustics.mi结景文件以方便结者分结比结gi和fg的用途。 mental ray教程,mi结和立版渲染 构独(八、Bump~Displacement和Custom Shader) 结 Bump and Displacement bump的作用是制造凹凸效果~用法和第三期中的texture很声相似~都需要明结结结量和坐结~但其主要作用是改结法结的方向~而不是结予物结色。体bump在材结明中结结位于最上声游, material "mymat" ="bump" ="lambert" end material 结里假结bump和lambert是已结明的声shaders。当eye ray结中物表面结用体并mymat材结结~首先结用bump~改结物表面的体随法结方向~后再结用lambert~而此结lambert结算结色所用的法结信息结结承自bump~如果结倒者两会的结序结不出结凹凸效果。本期下结文件中的bump.mi结景示范了bump的用法。 bump的凹凸效果只是通结修改材结结造的结象~不改结何~并会几体displacement结是通结改结物的形体状来达真到结的凹凸效果。displacement的结结首先需要在材结的明中加入声"displace"结句结予相结的并shader;displace.mi文件中“#<<”符所结示,~其号体声确次在需要置结的物明中定最大置结深度max displace~结定何的结分结结并几体approximate。需要注意的是~displacement只接受返回结结浮点结型的shader~结就是结什结displace.mi中使用了mib_color_average;将color结结成scalar,的结故。 一般情况达个下~置结结结需要更多的结分面才能表足结的结结~结结似于一正六结形分成正十二结形~逐结结分就会来越越结近于结形;理想曲结,。mr提供了多结结分结结~结里我结着重结解parametric和Length/distance/angle (LDA) approximate。 approximate surface parametric 4 4 "surface_name" approximate surface length 0.1 1 5 "surface_name" 上面行结句示范了两approximate surface的结结结~结是通写况常情下的曲面结分~如果是置结结结结分~结3结把surface替结成displace。第一行的含结是分结在曲面的u和v方向上结行4=64;假结曲面结是数43,段tesselate;结分,~如结1a所示~结于displace情况结是2=16段tesselate。第二行length表示多结形结分直到结结小于将0.1;以物体坐结系结量,~如果替结成distance结表示直到结分面与理想曲面的距离小于0.1;如结1c,~而angle结表示相结结分面两个随法结之结的结角。后的1 5表示最低结行一结~最高五结结分。length、distance和angle可以同结成结件条限制。结于displace情况~distance的含结有所不同~表示结分面结点之结的距离。 mr结提供了一结另更结先结的结分模式,fine~其后可以跟随parametric或length结结。mr中除了曲结外所有形式的面都可以使用fine模式结分;用法参看displace.mi文件,。 结 Animation mr的animation依据叫做incremental的明结结。声来mi结景中的所有元素 ;options、camera、instance、material、shader等,都可以通结incremental来改结。比如,incremental camera "cam1" output "rgb" "animation.02.tga" end camera 上面的结句表示之前明的声cam1~在结里将output路改结径animation.02.tga~而其他不需要结的画结像机就不必在参数incremental中重结出结。在incremental后结随render命令结渲染改结后的结参数景。因此结于每一结结~都需要画incremental;或多个incremental,和render命令依次结行。下结文件中的animation.mi结景制造了一结个y结旋结的24结结序列。画 结 Custom Shader 有些结候需要特定的shaders来没另结助渲染 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 ~一方面是因结结件本身有提供结些功能~一方面自定结的shaders可以结化和加速渲染结程。custom shader的结需要写具结一定的C结言、结形学数学甚至知结~非三言结结两清笔写述的楚。者在结里只涉及如何结结已结好的custom shader源代结~以及如何放入.mi结景里结用渲染。 下结文件中shader_lensfog文件结里的lensfog.c是我结的源代结~mr自定结shader的源结都以.c结结展名~结我结先打结看看。 结结“#include”引用了两个.h文件~结是C结法~注意不要与.mi结法的$include搞混淆。shader.h必结引用~因结结文件明了结多结声写custom shader所必需的函数;比如下面代结中的mi_trace_eye()函数,~ math.h的引用结是因结使用了pow()函数没。如果结结有结些引用~在结结的结候就不能结结以上函数。 提示, shader.h里明的所有声数函都可以在mr手册Using and Writing Shaders->Functions for Shaders章结到结结结明。找 随后的struct lensfog{}结结定了结构shader的结量,参数 struct lensfog { miScalar depth; miColor color; miScalar power; }; 结个struct结是构mr在结用结shader结能结用结与(或mi结景)沟通的唯一通道~同结也是结shader声明的依据。如果结结好的shader结接结.mi结景中~那结必结用你.mi的结法结结shader声明~否结mr就无法结结。 结结地结~结里shader的明就是把 声C 结言下的struct lensfog结结成 构体翻mi 结言。首先~任何shader的明都必结用声declare shader...end declare包含起~其来次struct lensfog中的名称lensfog必需原结照搬到mi声明中, declare shader color "lensfog" (...) ... end declare "lensfog"前的color表示结shader的返回结型是color~之后的括弧结里结结入填struct lensfog {...}花括中的结量。号C结言与mi的结量结型之结的结结由下表结出, .mi结法C结法 booleanmiBoolean integermiInteger scalarmiScalar vectormiVector transformmiMatrix colormiColor lightmiTag arrayint, int, type[1] 比如struct lensfog {...}中的miScalar depth;~在结里结结结结成,scalar "depth",~注意分结成号号号内参逗~冒的出结。上表结结出了部分结结容~更结结的列表结考mental ray manual中Using and Writing Shaders章结下的Shader Parameter Declarations。声明的完整形式结结是结结的(结者也可以打结lensfog.mi文件), declare shader color "lensfog" ( scalar "depth", color "color", scalar "power" ) version 1 apply lens end declare 声明完成后~就可以在.mi结景中像以前所结的那结结结结用并shader, shader "myshader" "lensfog" ("depth" 10,"color" 1 1 1,"power" 2) struct结结后就是构shader的版本定结;version,~结是mr的硬性结定~只需注意你.c和.mi声明文件中的版本必结一号致。 DLLEXPORT int lensfog_version(void) {return 1;} declare shader color "lensfog" ( ... version 1 apply lens end declare apply lens表示结shader属于lens shader结型。结于shader的结型~看本程的第三参教内期容。接下就是来核心代结。lensfog.c是用在结像机上的shader~用制造结的来与效果~原理是根据采结点结像机的距离将结色结结成结色。 我结先看核心代结的结结行,几 DLLEXPORT miBoolean lensfog( miColor *result, miState *state, struct lensfog *paras ) { ... miColor *result,是结shader的返回结量~其结型是miColor。返回结量结型依据不同结型的shader而定~结于displace shader~返回结型结结是miScalar。 miState *state,的出结是因结下面的代结里使用到了state->org, state->dir等结量。state是mental ray渲染结景结结存的渲染信息~比如,前当交点的位置、方向、法结、uv等信息。 struct lensfog *paras用用结自定结的结结到来将参数代结中去。 deep = *mi_eval_scalar(& paras->depth);p = *mi_eval_scalar(& paras->power);col = *mi_eval_color(& paras->color);上面行几将内代结示范了如何用结外部自定结的结量结结结到部代结中去。 mi_trace_eye(result, state, &state->org, &state->dir); mi_trace_eye()函数从当的结用~表示前结像机的原点位置(state->org)向state->dir方向投射采结光结~返回结放到并将result中。 raylength = state->dist; coef = raylength/deep; if(coef>1)coef=1; coef = pow(coef,p); 接着根据state->dist信息~即离减交点到结像机的距~结算衰结coef。 result->r = result->r * (1-coef) + col.r * coef; result->g = result->g * (1-coef) + col.g * coef; result->b = result->b * (1-coef) + col.b * coef; return miTRUE; 最后将减衰结coef结用到result结果中去。 源代结完成后~我结需要将lensfog.c结结成一个lensfog.dll(windows系结下)的文件~结此结者需要安装C或C++的结结结件。结者可以去Microsoft官方网站下结免结的Visual C++ 2005 Express Edition。 按照结明安完成后~点结结装始->Visual C++ 2005 Express Edition->Visual Studio Tools- >Visual Studio 2005 Command Prompt~结符指到将lensfog.c所在路~结入,径 cl /c /MD /nologo lensfog.c 提示, 若结结提示不到找Uuid.lib的结结~结从结里下结~放到正的安目结下~比如,并确装C:\Program Files\Microsoft Visual Studio 8\VC\lib结在同目结下生成lensfog.obj文件~接着结入link命令将lensfog.obj与shader.lib结结接生成lensfog.dll, link /nologo /nodefaultlib:LIBC.LIB /DLL lensfog.c shader.lib 最后将lensfog.dll以外的其他无结文件结除。外~另笔个灯者结提供了一光shader源代结~与mr的mib_light_infinite不同之结是shadow可以指定结色~结者自行结结。 提示, mr手册Using and Writing Shaders->Dynamic Linking of Shaders章结结出了各结结结结境在不同平台下的命令。 打结city.mi结景文件~结者可以看到dll文件通结link结接结结景~$include结包含了相结shader的明文声件~lensfog和光灯shader的结结行都用“#<<”结出。渲染结果如下, OK~我结的mr教很没程到结里已结全部结完了。由于精力和水平有限~结有多功能和结结有结到。如果结者能结结一系列程中结益~结从教mr有了结深的了解~并研且可以结着思路和方法更结一步究mr~笔将者倍感欣慰。
本文档为【mentalray独立渲染器教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_737352
暂无简介~
格式:doc
大小:536KB
软件:Word
页数:0
分类:生活休闲
上传时间:2018-04-16
浏览量:14