项目接下来要开始大量使用Shave&3DL,而现有的破解版本9.0.0在配置渲染时是异常繁琐的,正好之前写过一个小工具可以自动化执行这些重复的操作,但是有些小bug,今天拿出来修改了一下已经可以使用。上图就是使用此工具设置的Shave的预设grass渲染的结果,原本繁琐的步骤可以在半分钟内搞定了。

使用方法秉承极简主义,界面语言响应Maya中文化的大潮流。

三步走:在打算使用3Delight渲染shave的场景里面执行此mel,会弹出如图的弱智界面;

  1. 点1初始化
    (建立render pass,自动选择渲染相机)

  2. 选择照明灯光,点2
    (为灯光建立set和相应delightAttr节点,调整deep阴影选项以及灯光自身bias值)

  3. 框选所有投影、遮挡物体,包括shave,点3
    (为物体建立delightAttr节点,接受指定灯光光照,并设置物体Matte属性为true以遮挡shave)

可选步骤:点阴影分辨率来设置阴影贴图的分辨率,以适应不同尺度的场景。
正如前面所说,使用方法是极其简单的,但是很方便实用,适合厌倦重复或者不熟悉设置的孩子,三步就可以渲染出Renderman规格的纯毛发。
完善后暂时没发现其他问题,如果有问题欢迎反馈。
*注意* 此MEL只针对9.0.0版本的3Delight。
Source:

/*   suDLS.mel  cuckons[at]163.com
*   Make shave renderable by 3DLFM automatically.
2011.7.8
*/
int $suDLS_res = 512;
print $suDLS_res;
//Get the renderable camera
proc string suGetRenderCam(){
string $renderCam;
string $cams[] = `ls -type camera`;
for ($each in $cams){
if (`getAttr ($each+".renderable")`){
$renderCam = $each;
break;
}
}
return $each;
}
proc suSetShave(){
DL_createSurfaceShader("C:/Program Files/3Delight/shaders/Shave.sdl", 0);
string $shave[] =`ls -typ shaveHair`;
DL_setObjectAttrib("Shave1","surface",$shave);
setAttr "Shave1.SHAVEselfshad" 0.6;
print "Shave OK.\n";
}
//Setup the lightSet
global proc suDLS_SetLight(){
global int $suDLS_res;
string $lights[] = `ls -sl`;
sets -n "lightSet";
DLA_create();
//Assign
DL_setObjectAttrib("delightLightAttribs1","delightLightAttribs",$lights);
setAttr "delightLightAttribs1.generateShadowMaps" 1;
setAttr "delightLightAttribs1.shadowMapResolutionX" $suDLS_res;
setAttr "delightLightAttribs1.shadowMapResolutionY" $suDLS_res;
setAttr delightLightAttribs1.shadowMapType 1;
for ($each in $lights) {
string $shape[] = `listRelatives -s $each`;
setAttr ($shape[0]+".useDepthMapShadows") 1;
setAttr  ($shape[0]+".dmapBias") 0.2;
}
print "Light OK.\n";
}
global proc suDLS_SetObj(){
string $objs[] = `ls -sl -l`;
//Check over the objs and group if shavenode have no parent
for ($i = 0; $i<size($objs);$i++){
string $foo[] = `listRelatives -s -f $objs[$i]`;
if (size($foo) == 0)
continue;
if (nodeType($foo[0])=="shaveHair"){
string $grp =`group -n "shave_grp" $objs[$i]`;
$objs[$i] = $grp;
}
}
//<-------------
//create the Matte objects
//
sets -n "objSet" $objs;
DGA_create();
//Assign
DL_setObjectAttrib("delightGeoAttribs1","delightGeoAttribs",$objs);
//Illumination from
addAttr -ln "illuminationFrom" -at message delightGeoAttribs1;
//Matte Object
DGA_matteObjectCreateAttr delightGeoAttribs1;
setAttr "delightGeoAttribs1.matteObject" 1;
//lightSet
DL_disconnectNode( "delightGeoAttribs1.illuminationFrom" );
DL_connectNodeToMessagePlug( "lightSet", "delightGeoAttribs1.illuminationFrom" );
DL_disconnectNode( "delightLightAttribs1.shadowObjects" );
DL_connectNodeToMessagePlug( "objSet", "delightLightAttribs1.shadowObjects" );
//----------------->
//<----------------
//create the anti Matte objects
//
string $shaveShape[] =`ls -typ shaveHair`;
for ($i=0;$i<size($shaveShape);$i++) {
string $foo[] = `listRelatives -p $shaveShape[$i]`;
$shaveShape[$i] = $foo[0];
}
DGA_create();
//Assign
setAttr "delightGeoAttribs2.inheritDAGParentAttributes" 0;
DL_setObjectAttrib("delightGeoAttribs2","delightGeoAttribs",$shaveShape);
//Illumination from
addAttr -ln "illuminationFrom" -at message delightGeoAttribs2;
//Matte Object
DGA_matteObjectCreateAttr delightGeoAttribs2;
setAttr "delightGeoAttribs2.matteObject" 0;
//lightSet
DL_disconnectNode( "delightGeoAttribs2.illuminationFrom" );
DL_connectNodeToMessagePlug( "lightSet", "delightGeoAttribs2.illuminationFrom" );
suSetShave();
print "Objects OK.\n";
}
//Start setup
//
global proc suDLS_Init() {
source DL_aeCommon.mel;
source DL_attribsNodeManager.mel;
source DL_globals.mel;
source DL_lightAttribsNode;
source DL_geoAttribsNode.mel;
int $sample = 3;
string $rpn = `DL_createRenderPassNode`;
//Sample
setAttr ($rpn+".pixelSamplesX") $sample;
setAttr ($rpn+".pixelSamplesY") $sample;
//Set the renderable camera
AE_setConnectedNodeFromMenu delightRenderPass1.camera AE_updateAE `suGetRenderCam`;
print "Initialized OK.\n";
}
global proc suDLS_SetRes() {
global int $suDLS_res;
string $text;
string $result = `promptDialog
-title "分辨率"
-message "设置阴影贴图的分辨率,\n越高越清晰,但渲染时间越长.\n建议512 - 1024\n\n*注意* 此选项只影响以后设置的灯光,\n已经设置好的灯光不受影响!\n"
-button "OK" -button "Cancel"
-defaultButton "OK" -cancelButton "Cancel"
-dismissString "Cancel"`;
if ($result == "OK") {
$text = `promptDialog -query -text`;
$suDLS_res = int($text);
}
}
// Delight Setup UI
global proc suDLS() {
global int $suDLS_res = 512;
string $win_name = "suDLS_UI";
if (`window -q -exists $win_name`)
deleteUI $win_name;
window -t "3Delight&Shave Setup" -wh 200 126 $win_name;
columnLayout -adj 1;
button -l "1. 初始化" -c "suDLS_Init";
button -l "2. 设置灯光" -c "suDLS_SetLight";
button -l "3. 设置物体" -c "suDLS_SetObj";
button -l "阴影分辨率.." -c "suDLS_SetRes";
showWindow();
}

[suDLS.mel]3Delight渲染shave自动化工具相关推荐

  1. [转载]武哥的3delight渲染shave笔记_huadingjin_新浪博客

    原文地址:武哥的3delight渲染shave笔记作者:黑化武 1,创建物体+毛发+灯光,就以poly小球 毛发brunette 只打一盏聚光灯 为例 2,分别选中物体毛发 和 灯光 分别SET (C ...

  2. 微软“最强自动化工具”playwright实战项目

    微软"最强自动化工具"playwright实战项目 近期微软推出了一款号称"最强"的自动化测试工具,网上便出现了大批讲解文章,一看全是github上的reade ...

  3. selenium自动化工具(一)

    Selenium 的使用 文章预览: Selenium 的使用 1. 准备工作 2. 声明浏览器对象 3. 基本使用 4. 初始化配置 5. 查找节点 5.1 单个节点 5.2 多个节点 6. 节点交 ...

  4. python 自动化办公 案例_python自动化工具之pywinauto实例详解

    python自动化工具之pywinauto实例详解 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python自动化工具之pywinauto实例详解.txt ] (友情提示: ...

  5. 推荐一个工作流自动化工具

    以下文章来源方志朋的博客,回复"666"获面试宝典 今天,要和大家分享一个"开源"工作流自动化工具--n8n ,简单来说,它是一个与其他应用程序集成的应用程序, ...

  6. 前端自动化工具 grunt 插件 uglify 的简单使用(一)

    Grunt 的简介: Grunt 是一套前端自动化工具,是一个基于 node.js 的命令行工具,它一般用于: 1.压缩文件: 2.合并文件: 3.简单的语法检测: 4.监听文件变动: 5.less ...

  7. 在 CentOS 7 中安装并使用自动化工具 Ansible

    Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于Chef和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端.它使用SSH来和节点进 ...

  8. python 网页自动处理_推荐一款 10 行 Python 代码实现网页自动化工具

    各种各样的网站在我们日常工作和学习中占据着举足轻重的地位,学习.影音娱乐.查询资料.协同办公,越来越多的任务都被迁移到浏览器 因此,网页也蕴含着很多有价值.我们能够用得到的资源 例如,数据.歌曲.影视 ...

  9. gulp前端自动化工具的快速入门案例

    最近项目和工作中要开始使用自动化工具了,回想一下以前接触这个的时候就是什么nodejs,grunt之类的了,这次干脆就用一个新的,那么就是gulp... 全局下利用npm安装gulp sudo npm ...

最新文章

  1. php获取当月开始和结束的时间戳,PHP获取今天开始和结束的时间戳
  2. 9个用于构建容错系统的开源工具
  3. wap(dopra linux )命令,运营商定制的华为光猫Telnet命令恢复华为界面
  4. 给你准备的Linux启动流程
  5. C语言 pthread_create
  6. python连接postgis_python连接PostgreSQL
  7. js 浅拷贝和深拷贝
  8. Chrome 新功能:因更新或崩溃而重启后,PWA应用将自动恢复运行!
  9. 阿里巴巴Android开发手册(规约)
  10. 如何使用VMware 和ISO镜像文件 安装linux虚拟机,(附有安装工具)
  11. 微型计算机原理(第六版)姚向华编著(转载请注明出处---https://www.cnblogs.com/qingl)...
  12. 15直接引语变间接引语(陈述句作宾语从句)
  13. 测试键盘是否灵敏的软件,u盘启动大师pe检测键盘灵敏度图文教程
  14. 16比9尺寸是多少厘米_16比9(16比9分辨率大全)
  15. word方框内插入对勾
  16. swing(二十一)
  17. 大牛证券医药板块连续遭遇重挫
  18. 硕士复试自我介绍中英模板
  19. PS 父图层与子图层
  20. 华大单片机DMA学习

热门文章

  1. DVD知识介绍(转东转西)
  2. 《三天给你聊清楚redis》第2天看看redis怎么被搞出来的(22036字)
  3. 酷讯旅游国际机票上线 主打人性化功能
  4. GDPU C语言 天码行空3
  5. 【实战】我是如何在输入框实现@ At功能的
  6. 《QQS》swift 滚动视图
  7. Linux 新开terminal自动source 文件
  8. Linux系统无线网卡的安装【转】
  9. 记录一下微前端MicroApp项目的搭建,用的是vue-element-admin + MicroApp
  10. PyTorch深度学习笔记之四(深度学习的基本原理)