[备忘]how to use user-provided mentalray shader in Maya?(如何在maya里用自定义mentalray shader)
来源:互联网 发布:切割视频软件 编辑:程序博客网 时间:2024/05/01 00:41
说明:自己参考maya2009 document,稍加修改,得到了一个可行的方法。如有错误或不合适的地方,还请多多指正。谢谢~
1.建立vc project files
按照Maya2009/devkit/mentalray/docs/writingShaders/mayaShaderExample_32bit.vcproj的配置,新建一个mytexture.vcproj,确保其输出文件是mytexture.dll
2. mytexture.c
在mytexture.vcproj里增加代码(参见Maya009 document --> mental ray for Maya reference --> Example Scene with Custom Shader)
------------------------------------------------------------------------------
#include <stdio.h>
#include "shader.h"
struct mytexture
{
miScalar min;
miScalar max;
};
extern "C" DLLEXPORT int mytexture_version(void) {return(1);}
extern "C" DLLEXPORT miBoolean mytexture(
miColor *result,
miState *state,
struct mytexture *paras)
{
miVector vec;
miScalar min, max;
mi_point_to_object(state, &vec, &state->point);
min = *mi_eval_scalar(¶s->min);
max = *mi_eval_scalar(¶s->max);
result->r = vec.x < 0 ? min : max;
result->g = vec.y < 0 ? min : max;
result->b = vec.z < 0 ? min : max;
result->a = 1;
return(miTRUE);
}
------------------------------------------------------------------------------
注意:extern "C" DLLEXPORT一定要加上,否则用mentalray渲染时,提示:
PHEN 0.3 error 051011: shader "mytexture" not found
3.mytexture.mi
在mytexture.dll同级目录下建立mytexture.mi:
------------------------------------------------------------------------------
min version "3.0.0"
max version "3.6.99"
declare shader
color "mytexture" (
scalar "min", #: default 0.3
scalar "max", #: default 1.0
)
version 1
#apply material
#如果使用material,则在hypershader-->Create -->Create mentalray Nodes-->Material下会有myTexture,
##: nodeid 2007;
end declare
------------------------------------------------------------------------------
4. AEmytextureTemplate.mel
在mytexture.dll同级目录下建立AEmytextureTemplate.mel:
------------------------------------------------------------------------------
global proc AEmytextureTemplate ( string $nodeName )
{
editorTemplate -beginScrollLayout;
// mib light attributes
editorTemplate -beginLayout "mytexture Attributes" -collapse 0 ;
editorTemplate -label "min" -addControl "min";
editorTemplate -label "max" -addControl "max"
editorTemplate -endLayout;
}
------------------------------------------------------------------------------
5.修改Maya.env
把mytexture.dll所在路径加进去,比如,添加:
------------------------------------------------------------------------------
MAYA_LOCATION = D:/Program Files/Autodesk/Maya2009
PATH = $MAYA_LOCATION/mentalray/lib;$PATH; //!-maya需要找到mentalray的若干dll
MI_CUSTOM_SHADER_PATH = $MAYA_LOCATION/devkit/mentalray/docs/writingShaders;
------------------------------------------------------------------------------
6.测试
打开maya, 菜单window-->Rendering Editors-->mental ray --> shader manager,应该可以看到mytexture.mi已经加载了。
在hypershader-->Create -->Create mentalray Nodes-->Miscellaneous下会有myTexture的节点。
创建myTexture纹理,赋给一个物体,再用mentalray渲染即可。
- [备忘]how to use user-provided mentalray shader in Maya?(如何在maya里用自定义mentalray shader)
- [mentalray]如何在Maya.env里设置shader_p的路径
- Maya MentalRay 玻璃材质测试
- How to compile maya plug-ins and mental ray shader in x_86_64 linux ?
- maya中通过mel启动mentalray渲染器
- How to use “Opengl Shader” in cocos2d-x3.0
- how to make jelly effect on belly in maya
- 把Shadertoy上的shader应用到UE4和Maya
- how to select edge using maya API
- maya
- maya
- How to protect shader code in a release product
- UDK: Lightmap UV Layout Techniques & How to Create a Second UV Channel in Maya
- How to use user’s location in your app?
- How to Use a Shader to Dynamically Swap a Sprite's Colors
- 将RadGridView 在RadcomboBox里的应用(How to use RadGridView in RadcomboBox)
- Linear Workflow In Maya
- Curlnoise in Maya
- jquery下的 radio,checkbox,select操作
- Perhaps JAVA_HOME does not point to the JDK的解决方法
- C井与C数据类型对照
- OGRE + CEGUI + OIS + LUA 程序框架 Ogre-v1-6-5 CEGUI-SDK-0.6.2-vc9
- .Net中的内存回收机制
- [备忘]how to use user-provided mentalray shader in Maya?(如何在maya里用自定义mentalray shader)
- 如何使用netfilter/iptables构建防火墙
- Acess SQL语法
- 文本文件txt导入sql2005问题
- C# 进制转换
- 选择面数为0,然后删除所选
- Datatable加列表
- 终于入手D90
- 1.8 - 第一章:PHP基础 - 错误与错误管理