星鸿阁

 找回密码
 立即注册
搜索
热搜: 活动 交友 动画
查看: 574|回复: 1

渲染到纹理相关的脚本

[复制链接]

2249

主题

2759

帖子

9603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9603
发表于 2023-3-1 14:20:13 | 显示全部楼层 |阅读模式
回复

使用道具 举报

2249

主题

2759

帖子

9603

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9603
 楼主| 发表于 2023-3-1 17:31:14 | 显示全部楼层


  1. fn RTTgetFilename o tMark oName eName fType=(
  2.         --TimeMark
  3.         tDate=getLocalTime()
  4.         for i=1 to tDate.count do (tDate[i]=tDate[i] as string)
  5.         tDate[1]=substring tDate[1] 3 2
  6.         for i=2 to tDate.count do (if (tDate[i].count == 1) do (tDate[i]="0"+tDate[i]))
  7.         if tMark=="Time" then timeM=tDate[1]+tDate[2]+tDate[3]+" "
  8.         else timeM=""
  9.        
  10.         --FilePath, Name
  11.         FilePath=maxFilePath
  12.         if maxFilePath=="" do (FilePath=(getDir #image)+"\")
  13.         CurrentFileName=(filterString maxFileName ".max")[1]
  14.         ObjName=" "+o.name
  15.         if oName!="Object" do ObjName=""
  16.         ElementName=" "+eName
  17.         FileType="."+fType
  18.        
  19.         --Check ExistFile
  20.         FullDir = FilePath+timeM+CurrentFileName+ObjName+ElementName+FileType
  21.         fExist=true
  22.         fNtm=1
  23.         while fExist do
  24.         (
  25.                 fExist=(doesFileExist FullDir)
  26.                 if fExist do (FullDir = FilePath+timeM+CurrentFileName+ObjName+ElementName+"["+(fNtm as string)+"]"+FileType)
  27.                 fNtm+=1
  28.         )
  29.         --Return FileName
  30.         FullDir
  31. )


  32. fn RTTexecuter mode o mSize=if(selection.count==1) do
  33. (
  34.         FileNormal=(RTTgetFilename o "" "Object" "Normal" "jpg")
  35.         FileColor=(RTTgetFilename o "" "Object" "Color" "jpg")
  36.         FileAmbientOcclussionP=(RTTgetFilename o "" "Object" "AOP" "jpg")
  37.         FileAmbientOcclussionS=(RTTgetFilename o "" "Object" "AOS" "jpg")
  38.         FileUvw=(RTTgetFilename o "" "Object" "Uvw" "jpg")
  39.         FileMask=(RTTgetFilename o "" "Object" "Mask" "jpg")
  40.         FileUVMask=(RTTgetFilename o "" "Object" "UVMask" "jpg")
  41.        
  42.         pBake = o.iNodeBakeProperties
  43.         pProj = o.INodeBakeProjProperties
  44.                
  45. --Normalmap Element
  46.         NmMap=NormalsMap()
  47.         NmMap.enabled=true
  48.         NmMap.elementName="_Normal"
  49.         NmMap.fileType=FileNormal
  50.         NmMap.fileName=filenameFromPath NmMap.fileType
  51.         NmMap.filenameUnique=false
  52.         NmMap.filterOn=false
  53.         NmMap.autoSzOn=false
  54.         NmMap.outputSzX=mSize
  55.         NmMap.outputSzY=mSize
  56.         NmMap.targetMapSlotName="" --String
  57.         NmMap.useNormalBump=false
  58.         NmMap.useHeightAsAlpha=false
  59.         --NmMap.bitmap=undefined   --<Bitmap>

  60. --Color Map Projection
  61.         ColorMap=DiffuseMap()
  62.         ColorMap.enabled=true
  63.         ColorMap.elementName="_ColorProject"
  64.         ColorMap.fileType=FileColor
  65.         ColorMap.fileName=filenameFromPath ColorMap.fileType
  66.         ColorMap.filenameUnique=false
  67.         ColorMap.filterOn=true
  68.         ColorMap.autoSzOn=false
  69.         ColorMap.outputSzX=mSize
  70.         ColorMap.outputSzY=mSize
  71.         ColorMap.targetMapSlotName=""
  72.         ColorMap.lightingOn=false
  73.         ColorMap.shadowsOn=false
  74.         --ColorMap.bitmap=undefined
  75.        
  76. --Ambient Occlussion Map Projection
  77.         AoMap=CompleteMap()
  78.         AoMap.enabled=true
  79.         AoMap.elementName="_OcclusionProject"
  80.         AoMap.fileType=FileAmbientOcclussionP
  81.         AoMap.fileName=filenameFromPath AoMap.fileType
  82.         AoMap.filenameUnique=false
  83.         AoMap.filterOn=true
  84.         AoMap.autoSzOn=false
  85.         AoMap.outputSzX=mSize
  86.         AoMap.outputSzY=mSize
  87.         AoMap.targetMapSlotName=""
  88.         AoMap.shadowsOn=true
  89.         --AoMap.bitmap=undefined

  90. --Ambient Occlussion Map Solo
  91.         AoMapSolo=CompleteMap()
  92.         AoMapSolo.enabled=true
  93.         AoMapSolo.elementName="_OcclusionSolo"
  94.         AoMapSolo.fileType=FileAmbientOcclussionS
  95.         AoMapSolo.fileName=filenameFromPath AoMap.fileType
  96.         AoMapSolo.filenameUnique=false
  97.         AoMapSolo.filterOn=true
  98.         AoMapSolo.autoSzOn=false
  99.         AoMapSolo.outputSzX=mSize
  100.         AoMapSolo.outputSzY=mSize
  101.         AoMapSolo.targetMapSlotName=""
  102.         AoMapSolo.shadowsOn=true
  103.         --AoMap.bitmap=undefined
  104.        
  105. --Ambient Occlussion Material
  106.         tProjectMaterial=standard()
  107.         tProjectMaterial.name="AO_TempoMat"
  108.         tProjectMaterial.shaderType=1
  109.         tProjectMaterial.ambient=(color 255 255 255)
  110.         tProjectMaterial.diffuse=(color 255 255 255)
  111.         tProjectMaterial.specular=(color 255 255 255)


  112. --MaskMap
  113.         MaskMap=AlphaMap()
  114.         MaskMap.enabled=true
  115.         MaskMap.elementName="_Mask"
  116.         MaskMap.fileType=FileMask
  117.         MaskMap.fileName=filenameFromPath MaskMap.fileType
  118.         MaskMap.filenameUnique=false
  119.         MaskMap.filterOn=false
  120.         MaskMap.autoSzOn=false
  121.         MaskMap.outputSzX=mSize
  122.         MaskMap.outputSzY=mSize
  123.         MaskMap.targetMapSlotName=""
  124.         --MaskMap.bitmap=undefined
  125.                


  126.                

  127. --Projection Mapping
  128.         pProj.enabled=true
  129.         --Get Projection Modifier
  130.         modProject=projection()
  131.         for i=1 to o.modifiers.count do (if o.modifiers[i].name=="Projection" do modProject=o.modifiers[i])
  132.         pProj.projectionMod=modProject --maxObject : Read|Write  Get/Set the Projection Modifier.
  133.         --pProj.projectionModTarget="Sphere001"  -- string : Read|Write
  134.         pProj.BakeObjectLevel=true
  135.         pProj.BakeSubObjLevels=true
  136.         pProj.useObjectBakeForMtl=true
  137.         pProj.proportionalOutput=false
  138.         --Mapping Coordinates
  139.         pProj.subObjBakeChannel=1
  140.         --Filter Option
  141.         pProj.cropAlpha=false  -- boolean : Read|Write  Get/Set whether Alpha will be cropped.
  142.         --Method
  143.         pProj.projSpace=#raytrace  -- #raytrace   #uvw_match
  144.         pProj.useCage=true
  145.         pProj.rayOffset=10.0
  146.         --Resolve Hit
  147.         pProj.hitResolveMode=#furthest  --#closest #furthest
  148.         pProj.hitMatchMtlID=false --Hit Only Matching Material ID
  149.         pProj.hitWorkingModel=false --Include Working Model
  150.         pProj.warnRayMiss=true
  151.         pProj.rayMissColor=red
  152.         --Normal Map Space
  153.         pProj.normalSpace=#tangent  --#world  #screen  #local  #tangent
  154.         pProj.tangentXDir=#X_Right -- #X_Right  #X_Left   :::  Red +X  -X
  155.         pProj.tangentYDir=#Y_Down  --#Y_Up   #Y_Down   ::: Green, -Y +Y
  156.         --Height Map
  157.         pProj.heightMapMin=(-20.0)
  158.         pProj.heightMapMax=(20.0)
  159.         --obj.INodeBakeProjProperties.heightBufMin=0.0  -- float : Read|Write
  160.         --obj.INodeBakeProjProperties.heightBufMax=100.0 --float : Read|Write
  161.        


  162. --Renderer Setting (SuperSampler)
  163.         BakeScanline_Default=Default_Scanline_Renderer()
  164.         --Option
  165.         BakeScanline_Default.mapping=true
  166.         BakeScanline_Default.shadows=true
  167.         BakeScanline_Default.enableSSE=false
  168.         BakeScanline_Default.autoReflect=true
  169.         BakeScanline_Default.forceWireframe=false
  170.         BakeScanline_Default.wireThickness=1.0
  171.         --Antialliasing
  172.         BakeScanline_Default.antiAliasing=true
  173.         BakeScanline_Default.filterMaps=true
  174.         BakeScanline_Default.antiAliasFilter=Area()
  175.         BakeScanline_Default.antiAliasFilterSize=1.5

  176.         --Global SyperSampling
  177.         BakeScanline_Default.enablePixelSampler=true
  178.         BakeScanline_Default.globalSamplerEnabled=true
  179.         BakeScanline_Default.globalSamplerClassByName="Max 2.5 Star"
  180.         BakeScanline_Default.globalSamplerSampleMaps=true
  181.         BakeScanline_Default.globalSamplerQuality=0.5
  182.         BakeScanline_Default.globalSamplerAdaptive=true
  183.         BakeScanline_Default.globalSamplerAdaptiveThresh=0.1

  184.         --Object Motion Blur
  185.         BakeScanline_Default.objectMoti[&#50504;&#45236;]&#53468;&#44536;&#51228;&#54620;&#51004;&#47196;&#46321;&#47197;&#46104;&#51648;&#50506;&#49845;&#45768;&#45796;-xxonBlur&#8206;=true
  186.         BakeScanline_Default.objectBlurSamples=10
  187.         BakeScanline_Default.objectBlurDuration=0.5
  188.         BakeScanline_Default.objectBlurSubdivisions=10
  189.         --Image Motion Blur
  190.         BakeScanline_Default.imageMoti[&#50504;&#45236;]&#53468;&#44536;&#51228;&#54620;&#51004;&#47196;&#46321;&#47197;&#46104;&#51648;&#50506;&#49845;&#45768;&#45796;-xxonBlur&#8206;=true
  191.         BakeScanline_Default.imageBlurTrans=false
  192.         BakeScanline_Default.imageBlurDuration=0.5
  193.         BakeScanline_Default.imageBlurEnv=false
  194.         --Auto Reflect/Refract Maps
  195.         BakeScanline_Default.autoReflectLevels=1
  196.         --Color Range Limiting
  197.         BakeScanline_Default.colorClampType=0   --  0-Clamp 1-Scale
  198.         --Memory Management
  199.         BakeScanline_Default.conserveMemory=false
  200.        

  201. --Light Tracer
  202.         LightTracerAO=LightTrace()
  203.         LightTracerAO.global_multiplier=1.0
  204.         LightTracerAO.object_multiplier=1.0

  205.         LightTracerAO.sky_lights_on=true
  206.         LightTracerAO.sky_lights=1.0
  207.         LightTracerAO.rays=250
  208.         LightTracerAO.filter_size=0.5
  209.         LightTracerAO.ray_bias=0.03
  210.         LightTracerAO.cone_angle=88.0

  211.         LightTracerAO.color_bleed=1.0
  212.         LightTracerAO.color_filter=(color 255 255 255)
  213.         LightTracerAO.extra_ambient=(color 0 0 0)
  214.         LightTracerAO.bounces=0
  215.         LightTracerAO.volumes_on=true
  216.         LightTracerAO.volumes=1.0

  217.         LightTracerAO.adaptive_undersampling_on=true
  218.         LightTracerAO.initial_sample_spacing=4  --0:1x1  1:2x2  2:4x4  3:8x8  4:16x16  5:32x32
  219.         LightTracerAO.subdivide_down_to=0  --0:1x1  1:2x2  2:4x4  3:8x8  4:16x16  5:32x32
  220.         LightTracerAO.subdivision_contrast=5.0
  221.         LightTracerAO.show_samples=false
  222.         --LightTracerAO.rayengine=ReferenceTarget:Ray_Engine
  223.        




  224. --Baking
  225.         pBake.bakeEnabled = true
  226.         pBake.bakeChannel = 1
  227.         pBake.nDilations = 2
  228.        
  229.         case mode of(
  230.                
  231.                 "Normal":(
  232.                         pProj.enabled=true
  233.                         pBake.removeAllBakeElements()
  234.                         pBake.addBakeElement NmMap
  235.                        
  236.                         bRenderer = renderers.current
  237.                         renderers.current = BakeScanline_Default
  238.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  239.                         renderers.current = bRenderer
  240.                         )
  241.                        
  242.                        
  243.                 "Color":(
  244.                         pProj.enabled=true
  245.                         pBake.removeAllBakeElements()
  246.                         pBake.addBakeElement ColorMap
  247.                        
  248.                         bRenderer = renderers.current
  249.                         renderers.current = BakeScanline_Default
  250.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  251.                         renderers.current = bRenderer
  252.                         )
  253.                
  254.                 "Mask":(
  255.                         pProj.enabled=false
  256.                         pBake.removeAllBakeElements()
  257.                         pBake.addBakeElement MaskMap
  258.                        
  259.                         bRenderer = renderers.current
  260.                         renderers.current = BakeScanline_Default
  261.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  262.                         renderers.current = bRenderer
  263.                         )
  264.                
  265.                 "AOs":(
  266.                         tBackupMat=selection[1].material
  267.                         selection[1].material=tProjectMaterial
  268.                         pProj.enabled=false
  269.                         pBake.removeAllBakeElements()
  270.                         pBake.addBakeElement AoMapSolo

  271.                         SkylightAO=Skylight()
  272.                         SceneRadiosity.radiosity=LightTracerAO
  273.                        
  274.                         bRenderer = renderers.current
  275.                         renderers.current = BakeScanline_Default
  276.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  277.                         renderers.current = bRenderer
  278.                        
  279.                         delete SkylightAO
  280.                         SceneRadiosity.radiosity=undefined
  281.                         selection[1].material=tBackupMat
  282.                         )
  283.                
  284.                 "AOp":(
  285.                         tBackupMat=selection[1].material
  286.                         selection[1].material=tProjectMaterial
  287.                         tBackupProNode=#()
  288.                         tBackupProNodeMat=#()
  289.                         for i=1 to selection[1].projection.geomNodes.count do(
  290.                                 tProjectNode=selection[1].projection.geomNodes[i]
  291.                                 append tBackupProNode tProjectNode
  292.                                 append tBackupProNodeMat tProjectNode.material
  293.                                 tProjectNode.material=tProjectMaterial
  294.                                 )
  295.                        
  296.                         pProj.enabled=true
  297.                         pBake.removeAllBakeElements()
  298.                         pBake.addBakeElement AoMap

  299.                         SkylightAO=Skylight()
  300.                         SceneRadiosity.radiosity=LightTracerAO
  301.                        
  302.                         bRenderer = renderers.current
  303.                         renderers.current = BakeScanline_Default
  304.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  305.                         renderers.current = bRenderer
  306.                        
  307.                         delete SkylightAO
  308.                         SceneRadiosity.radiosity=undefined
  309.                        
  310.                         selection[1].material=tBackupMat
  311.                         for i=1 to tBackupProNode.count do(tBackupProNode[i].material=tBackupProNodeMat[i])
  312.                         )
  313.                
  314.                 "Uvw":(
  315.                         if (getCommandPanelTaskMode() != #modify)then(setCommandPanelTaskMode #modify)
  316.                         UnwrapExist=false
  317.                         for i=1 to o.modifiers.count do(if(o.modifiers[i].name=="Unwrap UVW") do UnwrapExist=true)
  318.                         if UnwrapExist==false do modPanel.addModToSelection (Unwrap_UVW ()) ui:on
  319.                         oUV=o.Unwrap_UVW

  320.                         oUV.renderuv_width=mSize
  321.                         oUV.renderuv_height=mSize
  322.                         oUV.renderuv_edgeColor=(color 255 255 255)
  323.                         oUV.renderuv_edgealpha=0.3
  324.                         oUV.renderuv_showframebuffer=false
  325.                         oUV.renderUV FileUvw
  326.                         bmapUVW=openBitMap FileUvw
  327.                         --deleteFile FileUvw
  328.                         if UnwrapExist==false do (deleteModifier selection oUV)
  329.                         --bmapUVW
  330.                         )
  331.                        
  332.                 "All":(
  333.                         bRenderer = renderers.current
  334.                         renderers.current = BakeScanline_Default
  335.                        
  336.                         pProj.enabled=true

  337.                         --color
  338.                         pBake.removeAllBakeElements()
  339.                         pBake.addBakeElement ColorMap
  340.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]

  341.                         --normal AOp
  342.                         pBake.removeAllBakeElements()
  343.                         pBake.addBakeElement NmMap
  344.                         pBake.addBakeElement AoMap
  345.                        
  346.                         tBackupMat=selection[1].material
  347.                         selection[1].material=tProjectMaterial
  348.                         tBackupProNode=#()
  349.                         tBackupProNodeMat=#()
  350.                         for i=1 to selection[1].projection.geomNodes.count do(
  351.                                 tProjectNode=selection[1].projection.geomNodes[i]
  352.                                 append tBackupProNode tProjectNode
  353.                                 append tBackupProNodeMat tProjectNode.material
  354.                                 tProjectNode.material=tProjectMaterial
  355.                                 )
  356.                         SkylightAO=Skylight()
  357.                         SceneRadiosity.radiosity=LightTracerAO
  358.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  359.                         selection[1].material=tBackupMat
  360.                         for i=1 to tBackupProNode.count do(tBackupProNode[i].material=tBackupProNodeMat[i])
  361.                        
  362.                        
  363.                         pProj.enabled=false
  364.                         --AOs
  365.                         pBake.removeAllBakeElements()
  366.                         pBake.addBakeElement AoMapSolo
  367.                         tBackupMat=selection[1].material
  368.                         selection[1].material=tProjectMaterial
  369.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  370.                         delete SkylightAO
  371.                         SceneRadiosity.radiosity=undefined
  372.                         selection[1].material=tBackupMat
  373.                        
  374.                         --Mask                                               
  375.                         pBake.removeAllBakeElements()
  376.                         pBake.addBakeElement MaskMap
  377.                         render rendertype:#bakeSelected vfb:on progressBar:true outputSize:[mSize,mSize]
  378.                        
  379.                         renderers.current = bRenderer
  380.                        
  381.                         --UVW
  382.                         RTTexecuter "Uvw" o mSize
  383.                         )
  384.                        
  385.                
  386.                 )

  387. )


  388. &#49324;&#50857;&#50696;



  389. RTTexecuter "Normal" selection[1] 2048 --&#45432;&#47568;&#47605;&#51012; 2048x2048&#49324;&#51060;&#51592;&#47196; &#44396;&#50892;&#49436; max scene &#54028;&#51068;&#51060; &#51200;&#51109;&#46108; &#54260;&#45908;&#50640; &#51200;&#51109;.

  390. RTTexecuter "Mask" selection[1] 2048 --&#47560;&#49828;&#53356;&#47605; 2048x2048

  391. RTTexecuter "Color" selection[1] 2048 --&#46356;&#54504;&#51592;&#47605; 2048x2048

  392. RTTexecuter "AOs" selection[1] 2048 --&#50544;&#48708;&#50616;&#53944; &#50724;&#53364;&#47336;&#51260;&#47605;(projection&#50504;&#46108;..) 2048x2048

  393. RTTexecuter "AOp" selection[1] 2048 --&#50544;&#48708;&#50616;&#53944; &#50724;&#53364;&#47336;&#51260;&#47605;(projection&#46108;..) 2048x2048

  394. RTTexecuter "Uvw" selection[1] 2048 --Uvw Templete..

  395. RTTexecuter "All" selection[1] 2048
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|starfluidga

GMT+8, 2024-12-21 00:52 , Processed in 0.014623 second(s), 21 queries .

Made by Liga 星鸿阁

Copyright © 2020-2048, LigaStudio.

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