上次写个plastic_test.sl
surface plastic_test( float Ka = 0, Kd = .6, Ks = .8, roughness = 0.02, Krfl =1.2, IORfresnel =1.5;
color Cdiff = 1,Cspec = 1;
string diffmap = "",envmap = "")
{
vector nI = normalize( I ), nN = normalize( N ), nF = faceforward( nN, nI ), V = - normalize( I );
//获取单位长度的 视线 nI , 表面法线 nN ,正面相机的表面的法线 nF , 视线的反方向 V;
color Cambient = Ka * ambient(); // 得到环境色
color Cdiffuse = Kd * Cdiff * diffuse( nF );//得到漫反射
color Cspecular = Ks * Cspec * specular( nF, V, roughness);//得到高光
float eta = ( nI.nN < 0) ? 1/IORfresnel : IORfresnel; //获取光线传输时候的偏角率
float kr,kt;vector Rrfl,Trfr; fresnel( nI, nF, eta, kr, kt, Rrfl, Trfr); //获取菲尼尔反射折射强度和反向
color Creflection = kr * Krfl * trace(P,Rrfl,"samplecone",0,"samples",1);//获取有菲尼尔特性(边缘强中间弱)追踪反射的基本颜色
Ci = Cambient + Cdiffuse + Cspecular + Creflection;
}
看看。。还没有完善。先完善一点。
这么几个,反射的模糊控制没有给出控制。漫反射和环境的纹理没有应用;
surface plastic_test( float Ka = 0, Kd = .6, Ks = .8, roughness = 0.02, Krfl = .8, IORfresnel =1.5,Blur = 0,Blur_sample = 1,Kenv = 1;
{
float Br = radians( Blur );
vector nI = normalize( I ),
//获取单位长度的 视线 nI , 表面法线 nN , 正面相机的表面法线 nF
color Cambient = Ka * ambient(); // 得到环境色
color Cdiffuse = Kd * Cdiff * diffuse( nF );//得到漫反射
if ( diffmap !="")
color Cspecular = Ks * Cspec * specular( nF, V, roughness);//得到高光
float eta = ( nI.nN < 0) ? 1/IORfresnel : IORfresnel; //获取光线传输时候的偏角率
float kr,kt;vector Rrfl,Trfr; fresnel( nI, nF, eta, kr, kt, Rrfl, Trfr); //获取菲尼尔反射折射强度和反向
color trsmap;color Creflection = kr * Krfl * trace(P,Rrfl,"samplecone",Br,"samples",Blur_sample,"transmission",trsmap);// 获取有菲尼尔特性(边缘强中间弱)追踪反射的基本颜色 trsmap存入追踪的传输光线的强度信息
if ( envmap !="" )
Ci = Cambient + Cdiffuse + Cspecular + Creflection;//合成表面的结果颜色;
}
下面 使用3delight的tdlmake转换两个纹理;测试一下。
注意 要在rib1输出节点中加入纹理路径;&;e:/rib_asset/textures
每次修改.sl文件,保存后要注意编译成.sdl,然后shell下使用sdl2otl.py注册到.otl,houdini中只要file菜单下refresh asset libraries刷新。修改的shader接口效果就自动更新了。
tdlmake -envlatl file.hdr file.tdl 做环境 经纬球纹理要求 256*128 512*256 1024*512
tdlmake file.psd file.tdl 做普通纹理 64*64 128*128 256*256 .....64*2^n的阶梯关系;这样很优化内存.同步cpu访问频率。
对于 环境反射模糊 和 纹理的控制 研究 3delight user
自己会rsl并且了解一点几何数学,可以给自己添加想要的材料的特性了。
至于速度上的优化。。慢慢研究几何关系。
然后使用cpu的某些提速的特别指令集如SIMD单指令多数据流方式编写,或者使用hash表格映射数据。。。等等缓存一些中介性的简化。
简化。。。
来次靠近世界本质的思维;(夸大点。)
2+2+2+2
哈哈。。用了英语说就不知道了吧。hash 就是一些规律的散列表格用于查询结果。
比如我们小学学的乘法口诀表格就是个位数乘法规律的散列表格。一一得一,一二得二....七七四十九...九九八十一,
这里 一个规律是另外规律的简化 乘法是雷同加的简 除法是乘法的逆
2+2+2+2
乘法有个九九表还好记得。 查表对号 找到 二四得八 (利用乘法基本规律统计散列表 hash加法的结果 )
这里经过规律简化。查找规律的表格 费时间的操作节约了时间
如果按步就班。。。2+2=4 再+2 为6 再+2 为8
日常简单的数据处理人们都会无意识的按照这些方式把累人的做法简化得出一些简化的规律,然后无形之中把这些简化的看似乎没有联系的组织在一起记。这就是散列优化。碰到麻烦累人的情况。只要脑中有这些规律的巧妙简化结果的,回忆这些简化组合,那么累人的工作就在回忆下很快搞定了。
生灵智慧的守则之一
(数学就和生灵的有形肢体器官一样,智慧生灵本能会用到,这是生灵趋利避害生存的重要凭借)
难道你不是智慧的生灵么??
散列表 应用有很多啊。 比如 高点的对数表
就是古代中国神秘的奇门遁甲,遁甲天书等中 也有散列表 比如阳遁表,阴遁表,是一些时空规律数据的散列优化表,如何应用现在不得而知了。。。
感叹一下。 古中国很多奇妙的知识都失去传承了。。。
现在人工机器人的平衡运动系统也大量的运用了散列法,
规律是通过观察统计发现得到的。散列法是通过对统计后得出规律在运作的时候再观察研究统计等处进一步的简约得对应的东东。可能是个需要记忆数据表格,可能是区间,等等。表现在生物应激反应上可能是某些个简单到底的动作就能保住这生物的小命
联系客服