3ds Max插件制作方法
- 格式:docx
- 大小:19.81 KB
- 文档页数:3
3ds max插件教程-SimCloth3 自然碰撞刚体布料教学
以往的教学中很容易出现如此的状况虽然布料能自然落下却无法与其它对象产生自然的碰撞
这个成果只需靠simcloth即可完成无须动用到reactor来运算
先来建立个简单场景我想这大家都会了吧
将这三个对象加入simcloth 对象类型选择Deflector
建立布料模型细分要多分割些才能正确的模拟
将布料加入simcloth 类型选择cloth
最后就加入运算吧~~~享受成果吧!! 够简单了吧
最后成果
3ds max插件教程-SimCloth3 自然碰撞刚体布料教学
编辑:丝路教育
TAG:3dmax
文章地址: /cg/a/3dmaxpeixun/xuanran/201403121640.html。
3Dmax插件使用教程:ZBrush、SubstancePainter等的整合为了提高3D模型的质量和效果,3Dmax软件提供了许多插件,其中包括了ZBrush和Substance Painter。
本文将详细介绍如何整合和使用这些插件,以提升模型的细节和质感。
一、安装插件1.打开3Dmax软件,点击“自定义”菜单,选择“配置系统意见”。
2.在系统设置对话框中,点击“插件”标签。
3.点击“添加”按钮,选择下载好的插件文件,比如“ZBrush”和“Substance Painter”的插件文件。
4.点击“确定”按钮,完成插件的安装。
二、整合ZBrush插件1.打开3Dmax软件,点击“自定义”菜单,选择“在3Dmax中打开ZBrush”。
2.在ZBrush软件中,打开要编辑的模型文件。
3.在ZBrush的工具栏中,选择“插件”菜单,点击“3Dmax插件”选项。
4.在弹出的对话框中,选择“发送到3Dmax”选项。
三、使用ZBrush插件进行雕刻1.在3Dmax软件中,点击“渲染”菜单,选择“ZBrush插件”选项。
2.在“ZBrush插件”面板中,点击“连接”按钮,将3Dmax和ZBrush软件进行连接。
3.选择要编辑的模型,点击“编辑”按钮,进入雕刻模式。
4.在ZBrush软件中进行细节雕刻,比如增加皱纹、褶皱或纹理等。
5.点击“保存”按钮,将编辑后的模型保存。
四、整合Substance Painter插件1.打开3Dmax软件,点击“自定义”菜单,选择“在3Dmax中打开Substance Painter”。
2.在Substance Painter软件中,打开要编辑的模型文件。
3.在Substance Painter的工具栏中,选择“插件”菜单,点击“3Dmax插件”选项。
4.在弹出的对话框中,选择“发送到3Dmax”选项。
五、使用Substance Painter插件进行贴图1.在3Dmax软件中,点击“渲染”菜单,选择“Substance Painter插件”选项。
好,开始吧,打开3ds Max,建立一个男孩头部的模型,建模不属于本教程的范畴,略!(1)在完成一个头部的模型之后,首先选择模型中把会生长头发的一些面,然后按住键盘的“shift”键用移动工具移动它,从而复制出来一份新的头皮模型,将这个新物体命名为“toupi”,如下图所示。
(2)将移动出来的头皮模型缩小一点儿,放到男孩模型的头顶内部,我们将用这个头皮来生长头发,如下图所示。
(3)打开主菜单的“Rendering”菜单下的“Environment”菜单,如图5所示。
或者按键盘的数字“8”键。
(4)在弹出的“Environment and Effects”面板中,单击“Add”按钮,如下图所示。
(5)单击“Add”按钮后会继续弹出一个面板,在这个面板中选择“furfx”,如下图所示,然后单击“OK”按钮确认选择,并关闭面板。
(6)单击“pick”按钮在视图中拾取头皮模型,如图8所示。
或者单击“select”按钮,在弹出的“按照名称选择”面板中选择“toupi”物体。
(7)拾取完模型之后我们就能看到稀疏的头发已经出现在小男孩的头顶了,不过头发就像钢针一样直直的竖立着,如下图所示。
下面我们要让它的头发弯曲下来。
(8)在“创建面板”下的“帮助物体”栏选择“Hair Trix”物体。
如下图所示。
(9)在顶视图初建这个“Hair Trix”物体,让它的箭头方向朝向头部的下发,如下图所示。
这个“Hair Trix”物体是个一导向器,它能让毛发朝向箭头所指的方向。
(10)新创建出来的“Hair Trix”物体名字叫做“hairfxVector01”。
选择它,在修改面板修改这个导向器的影响范围。
如下图所示。
其中“Near Range”的参数一定要达到至少包括头发的大多数,甚至整个包括头发。
如下图所示。
“Far Range”是导向影响范围的衰减区域。
再次回到“Environment and Effects”面板中,打开“Leaning Bending”卷展栏。
3Dmax插件开发指南:自己设计定制化的插件在3D建模和动画设计领域中,3Dmax是最常用的软件之一。
它为用户提供了各种功能和工具,但有时我们可能需要一些额外的功能来满足特定的需求。
这时候,自己开发定制化的插件就成为一种有效的解决方案。
本文将针对初学者,提供一个详细的3Dmax插件开发指南,帮助读者自己设计和开发定制化的插件。
1. 确定需求插件的开发开始于明确需求。
首先,你需要明确自己的目标是什么,要开发的插件能为你的3Dmax工作流程带来哪些改进。
考虑到3Dmax的功能限制和你的工作需求,决定插件的主要功能是非常重要的。
2. 学习3Dmax插件开发基础知识在进行插件开发之前,你需要了解一些基础知识。
首先,你需要学习3Dmax的Scripting语言,这是用于编写插件的语言。
其次,你需要熟悉3Dmax的对象模型,包括各种对象和属性的概念与用法。
最后,你还需要了解3Dmax插件的API,这些API提供了访问和控制3Dmax功能的接口。
3. 选择合适的开发工具和编程语言3Dmax插件可以使用多种编程语言开发,比如MaxScript、Python和C++等。
根据自己的技术背景和需求,选择合适的编程语言。
同时,你还需要选择一个适合插件开发的集成开发环境(IDE),例如Autodesk的自带开发工具或者Visual Studio等。
4. 编写插件代码一旦你熟悉了3Dmax的Scripting语言和相关的API,就可以开始编写插件代码了。
首先,你需要创建一个新的脚本文件或者项目,并导入3Dmax的相关库文件。
然后,根据插件的功能需求,编写相应的代码实现。
代码编写的过程中,可以参考3Dmax的官方文档和API手册,以及一些开发者社区的资源。
5. 调试和测试插件在插件开发过程中,调试和测试是非常重要的环节。
你需要逐行检查插件代码,确保其逻辑正确无误。
另外,还需要模拟实际的工作场景,测试插件在各种情况下的稳定性和性能。
第一部分的教程先做下菜单翻译。
可以简单作为命令中文化的对照表使用。
作为沟通请大家提出异议和批评。
好及时进行修改。
——————————————————————————————————↑为file下命令的原创翻译。
肯定有不准的。
希望大家多多沟通以便及时修正更新——————————————————————————————————————————————↓edit下命令翻译——————————————————————————————————————————————↓VIEW下命令翻译——————————————————————————————————————————————↓是布局的菜单——————————————————————————————————————————————↓工具菜单——————————————————————————————————————————————↓输出菜单——————————————————————————————————————————————↓导入与命令菜单——————————————————————————————————————————————↓最后2个菜单OK完成了第一部分了。
然后开第二部分。
阐述粒子和场还有区域网格流体粒子属性关系数据比较复杂,所以需要点时间来做整理和翻译。
只是按照个人理解来做的。
肯定会有缺失。
不过我已经努力了。
都说最好的教程就是自己去将软件从头到尾的进行下分析整理。
所以希望这一批次的整理会给大家带来用处。
————————————————————————————————————____________________________________________________________________________________________———————————————————————————————————————————————————————————————↑是粒子属性。
2DExtruder随机挤出插件使用教程2DExtruder随机挤出插件是一个MAXScript脚本,可以对选择的多个样条线图形进行随机挤出厚度,还可以设置简单的生长动画。
【主要特征】- 对多个样条线图形随机挤出高度- 设置生长动画【版本要求】3ds Max 2015或更高版本【快速开始!】1.绘制多个样条线图形并选择它们。
2.打开2Dextruder挤出插件。
方法有两种:- 直接拖动2DExtruder脚本文件到3dMax窗口。
- 点击3dMax主菜单–脚本–运行脚本,选择2DExtruder脚本,点击“打开”按钮打开2DExtruder窗口面板。
【2DExtruder界面】3.设置参数。
-最小高度、最大高度:设置随机高度的区间。
-封口:勾选后挤出模型底部加盖(默认为不勾选)。
4.点击“创建”按钮生成。
【生长动画(一)】1.绘制并选择所有样条线图形。
2.打开2DExtruder插件,勾选“开启”开启动画功能;设置动画的“开始”和“结速”时间(帧)。
3.点击“创建”按钮创建模型和动画。
4.点击3dmax的“播放动画”按钮,在视口中播放动画。
【生长动画(二)】1.绘制并选择所有样条线图形。
2. 打开2DExtruder插件,勾选“开启”开启动画功能;勾选“随机”选项,并设置后面的参数(每个生长动画的时长);设置动画开始的时间区间,在“开始”和“结速”时间(帧)之间。
3.点击“创建”按钮创建模型和动画。
4.点击3dmax的“播放动画”按钮,在视口中播放动画。
附:参数说明参数:-最小高度、最大高度:设置随机高度的区间。
-封口:勾选后挤出模型底部加盖(默认为不勾选)。
动画:-开启:勾选开启动画记录功能。
-开始:动画的开始时间(帧)。
-结速:动画的结束时间(帧)。
-随机:后面参数为每个生长动画时长(帧),上面“开始”和“结束”参数转义为定义每个生长动画随机开始的时间区间(帧)。
Guruware Ivy(Max制作藤蔓插件)简介及使用帮助1)放置藤蔓根部(IvyRoot)2)点“Grow”按钮3)在视口里观察藤蔓的生长4)再次点“Grow”按钮停止生长5)藤蔓会自动赋予一个多维材质6)要做生长动画?请给藤蔓年龄设置关键帧v0.76b变更- 增加参数的可调节范围- 支持3ds Max 7/8- 更好的叶面朝向,我认为。
v0.8b变更- 可以存取预设参数- 通过叶片年龄影响顶点颜色- 修正:变更CS-Distance参数时枝条过细的问题v0.81b变更- 再次增加参数的可调节范围v0.82b变更- 修正:用backburner致使藤蔓移至世界中心的问题- 修正:删除生长中的藤蔓会当机的问题OK,现在来种一棵。
创建:首先在场景里放置藤蔓根部。
从哪里找到这玩意呢?创建面板->第一项,几何体->从下拉菜单找到“Guruware”,下面出现的“gwIvy”就是了。
你也可勾选上自动栅格|AutoGrid用来对齐物体。
将它放到你的场景中,比如地面就不错。
事实上它可以种到任何位置,只要保证它不在某个面的下方即可(因为一个面的背侧阻碍藤蔓生长)。
你可以移动它,但(按照设计)不能旋转或缩放。
想要藤蔓向上生长,要把根部靠着墙放,否则它就只会在地上——如果有地面的话——爬了。
生长参数展卷栏:如果你的场景是真实比例的,则无需改变“Grow-Params”展卷栏的任何参数——显然的,这些参数只是为更好调整生长过程。
如果场景未经正确缩放,你可能花些时间调一下这些数值了~Grow-Parameters,生长参数Grow-Size,设定每次增长的长度Up-Vector,向上生长的数量(Probe:可以负值,即悬垂生长)Primary Weight,沿之前增长方向的数量Random Weight,随机增长的数量Gravity,重力影响Adhesion,支撑强度(吸附到周围物体的程度)Adh.Distance,支撑起效的最大距离Branching,分出新枝条的几率Max Length,一个分支的最大长度Length Variation,分支最大长度的变化程度Max.Parents,母枝的最大数量,设为0则一直不分枝Seed,随机种子Threads,使用多少CPU线程,最大值跟电脑的CPU/CPU核心数有关Grow Ivy,启动/停止藤蔓生长Age,藤蔓年龄(一龄增加Grow-Size的长度),唯一一个可动画的参数Stop at,勾选后设置一个年龄,在到达此年龄时停止生长,这样你可以在运行时去喝咖啡了living branches,统计值,活枝条数量(只有活枝条能生长)grow-time,统计值,总生长时间现在请点击“Grow”按钮,藤蔓将生长,如魔法般的运行。
3d s M a x插件A u t o g r a s s教程-CAL-FENGHAI.-(YICAI)-Company One1Autograss插件是通过在已有对象的场景中添加草。
跟做地面上的平面或者稍复杂的多边形网格一样简单。
让我们一起学习下吧!打开3DMax,导入一个有地形的场景,或者创建一个新的地形,要确保地形大小为实际尺寸(比例1:1)。
Autograss可以创建出和现实世界一样尺寸大小的草来。
例如,你可以创建一架大小为20*20的平面(适宜休闲玩耍的那种草坪)。
接着,选中地形,创建Autograss,也可以在3DMAX中按住Tab键创建。
点击地形按钮(小球)。
然后选择VRay菜单目录,点击pop-up 选择器。
然后点击Autograss创建出自动生草的对象,由于前面我们选中了地形,自动生草对象会自动附在地形上。
这样一个Autograss效果就基本完成了,现在你的场景里面有了自动生草对象是和地形连在一起的,默认状态下,草的设置为Kentucky牧草。
下面我们讲述如何自定义草的外观。
要修改自动生草功能的设置,通过在窗口点击选择生草对象,然后点击修改键Viewport display窗口显示卷展栏此卷展栏里设有控制草在3dmax中的显示设置1.窗口预览点击此栏下窗口预览(Preview in viewport)前的选择框,可以预览出草在MAX 中的效果。
默认状态下是没有勾选,草的预览和渲染出来的草不完全相同,但是能够给我们一个最终草的尺寸和形状的印象。
同时也表现出了真实的草和枯草的差别.2.预览密度设置你可以在预览模式下调解预览密度,大小在(没有草)至(最多草)之间。
这些设置只是影响预览效果,不影响渲染出的草。
blades seenMax blades seen 参数可以对窗口中草的显示设置一个上限值,这样我们可以在一个大的区域内预览同时又不拖慢窗口显示速度。
当最大值都不能满足窗口显示的草时,我们可以通过调解草的密度而限制其大小。
3D3dsmax7 插件maxscript3dmaxSDK游戏开发作者:卢立祎来自:愤怒的犬夜叉在游戏开发过程中需要大量的模型数据来描述人物、建筑、场景,如果开发编辑器来编辑网格、顶点,代价太大,因此往往利用一些现成的3D建模软件来代替。
使用 3dsMax7 进行模型、动画数据导出是3D引擎开发过程中的一个必然环节(或者使用Maya等类似的3D建模工具)。
然而discreet公司在指导用户进行二次开发的方面做得并不是太好,有一些问题是在开发过程中会常常遇到。
美术工作人员在3dsMax环境中编辑好了三维人物或物体,加入了动作动画,指定了渲染方式,编辑了贴图和UV坐标之后,我们就必须想方设法把这类数据从编辑环境中导出成文件以供引擎使用。
一般来说,最主要有三种方式来取得需要的数据:1. 利用已有的导出格式取得数据2. 制作max的export插件输出数据3. 编写maxscript输出数据利用已有的导出格式取得数据使用3ds文件和XML文件作为导出源文件,然后直接在引擎中读取数据转化为自己定义的数据格式。
一般来说会使用一些转换工具转换为更加高效的文件格式。
比如在早期的MS DirectX SDK 中,就有一个convert3DS 的工具,把3ds 格式的文件转换为D3DX使用的X文件。
由于这种方式受到源文件信息固定的限制,渐渐的不被采用。
DirectX SDK 也开始使用插件的方式导出数据。
Max7中,在菜单文件中选择导出,可以看到“IGame Exporter”,可以导出XML格式的文本文件,由于现在解析XML文件已经非常简单,甚至可以用序列化直接映射到数据结构,因此此方法有一定的使用价值。
制作max的export插件输出数据使用maxSDK进行插件开发是大家普遍采用的方法,网上也可以查到相关的很多资料。
在3dsmax7的目录中,可以找到maxsdk的目录,其中的help目录可以找到一些使用和开发帮助:1. Sdk.chmSDK的帮助文件。
给你的3DMAX装个矢量渲染插件Illustrate
喜欢欣赏和制作Flash动画的朋友应该会发现,网上很多Flash作品中带有表现三维效果的内容。
本文是给你的3DMAX装个矢量渲染插件的介绍,下面是该介绍的详细信息。
安装Illustrate!插件后,它就成为3DS MAX中的一个渲染器,用它可以将三维场景渲染输出成二维的。
它除了能输出平常的位图格式文件,最大的特点就是输出矢量图格式文件。
1. 建立场景,在场景中创建一个茶壶,并给茶壶做旋转的动画,我做了20帧。
2. 渲染设置,Illustrate!安装好后,在3DS MAX的菜单中就会增加一栏Illustrate!。
点击其Options菜单项,首先会弹出渲染向导对话框,通过回答向导提出的问题实现渲染的主要设置。
第一步是选择输出的格式,这里选择ShockwaveFlash;第二步是设置输出场景的背景,笔者选择了白色背景;第三步是有两个问题,一个是选择渲染的风格,一个是选择渲染的部位,这里选择Cartoon风格和渲染边线Lines部分;第四步是设置输出的文件的位置、窗口大小等的,其实可以在渲染的时候设置;最后一步就是点Finish按钮。
到这一步我们基本完成了渲染前的准备工作,此时你如果要进行细节上的修改,就要进入Illustrate!窗口进行操作了。
3DS Max 插件制作的学习方法要从3ds Max中导出场景信息,大概有两种方式:1.利用3ds Max的sdk制作插件。
2.利用3ds Max的Max Script编写场景输出脚本。
两种方式各有优劣,这里仅叙述我用了数天研究3ds Max SDK并制作插件的学习心得。
1.前期环境配置工作。
首先肯定要安装带SDK的3ds Max,我安装的是3ds Max7。
安装后在maxsdk\help 下有个sdkapwz.zip,把这个文件解压到VS 6.0或VS 2003的application wizard路径下,启动VS就会有3ds Max plug-in的应用程序向导来生成插件程序的框架。
2.制作插件需要了解的几个基本概念。
2.1 我所了解的插件原理是:3ds Max会公布一些接口,插件制作者需要做的是实现这些接口。
例如利用向导生成一个用于场景导出的插件。
就会发现在生成的程序中有一个类继承于class SceneExport,而SDK 中关于这个接口的描述是:
This is a base class for creating file export plug-ins. The plug-in implements methods of this class to describe the properties of the export plug-in and a method that handles the actual export process.
再看下面的函数说明,可以看到函数是虚函数的方式声明的,所以必须要将其所有的函数进行实现。
2.2 3ds Max是怎样识别插件的接口?还是以上面的场景到处插件为例,程序中还会生成一个继承于ClassDesc2的类,这个类会实现一些关于类的ID,层次信息处理的函数。
估计系统就是根据这个识别处我的插件的接口,没有具体去研究,只了解个大概。
2.3 如何调试所编写的插件,SDK中有说明,我这里简单说一下,将工程属性设置为Hybrid(默认是Debug),并且把输出dle文件的路径设为3ds Max的plug-in的路径,再把调试的可执行程序设为3ds Max.exe,这样调试的时候就会启动3ds Max主程序,其他诸如设置断点,单步等调试手段和普通程序的调试方法一样。
3.通过一个例子学习插件编程
这部分还真不好写,涉及到一些代码,代码中又有很多API需要讲解,API中又有很多基本知识需要说明,唉,硬着头皮来吧。
还是以那个场景导出类为例,可以看到,SceneExport中有个非常重要的函数需要实现:virtual int DoExport(const TCHAR *name,ExpInterface *ei,Interface *i,
BOOL suppressPrompts=FALSE, DWORD options=0) = 0;
先看看参数:
name 表示要导出的文件名。
ei 用来枚举场景,需要注意的是:由于这个函数是由系统调用的,所以这个参数是系统传递的,不用去思考怎么实现ExpInterface这个接口。
i 提供一个用来调用3ds Max方法的指针,可以把它视作一个指向3ds Max的指针。
同样,这个指针也是由系统传递的。
剩下两个参数暂不关心。
现在来研究ei和i两个参数:
class ExpInterface仅包含一个成员:IScene *theScene。
这样的类设计的简直是“无耻”。
再去研究IScene吧。
IScene中有一个很重要的函数:
virtual int EnumTree( ITreeEnumProc *proc )=0;
根据SDK的说明,该函数的功能是:用来枚举场景中的每个INode。
因此需要一个ItreeEnumProc*作为参数,由于是自己调用整个函数,因而必须自己实现ItreeEnumProc接
口,还好这个接口不是很复杂,把这个回调函数实现就可以了:
virtual int callback( INode *node )=0;
因为是回调函数,所以node也是系统传递进来的,为了证明这一点,我们可以编程实验一下:
class MyEnumProc: public ITreeEnumProc
...{
public: int callback( INode *node )
...{
int a = 0; //在这里设置断点
return a;
}
}
在MyExport中添加这一个成员变量:
MyEnumProc MyProc;
int MyExport::DoExport(const TCHAR *name,ExpInterface *ei,Interface *i, BOOL suppressPrompts, DWORD options)
...{
/**//*在函数中添加这行代码*/
ei->theScene->EnumTree(&this->MyProc );
if(!suppressPrompts)
DialogBoxParam(hInstance,
MAKEINTRESOURCE(IDD_PANEL),
GetActiveWindow(),
MY5OptionsDlgProc, (LPARAM)this);
return FALSE;
}
调试这个例子,在场景中绘制三个立方体,可以看到系统会调用callback三次,这说明一个物体就是一个Node。
那么怎么来导出一个Node几何信息呢?看下面这个代码。
public: int callback( INode *node )
...{
Object *lobj;
lobj = node->GetObjectRef();
if (lobj->SuperClassID()== GEOMOBJECT_CLASS_ID)
...{
GeomObject* gobj = (GeomObject*)lobj;
Class_ID triID = Class_ID(TRIOBJ_CLASS_ID,0);
Class_ID boxID = Class_ID(BOXOBJ_CLASS_ID,0);
if (lobj->ClassID()==boxID)
...{
if (lobj->CanConvertToType(triID))
...{
TriObject *triobj = (TriObject *)lobj->ConvertToType
(0,triID);
Mesh mesh = triobj->mesh;
int numVerts = mesh.getNumVerts();
}
IParamArray* array = lobj->GetParamBlock();
float length = 0.0f;
float height = 0.0f;
float width = 0.0f;
array->GetValue( lobj->GetParamBlockIndex(BOXOBJ_LENGTH),
0, length, FOREVER);
array->GetValue( lobj->GetParamBlockIndex(BOXOBJ_HEIGHT),
0, height, FOREVER);
array->GetValue( lobj->GetParamBlockIndex(BOXOBJ_WIDTH),
0, width, FOREVER);
}
}
首先node->GetObjectRef()会返回这个节点的物体引用。
关于ObjectRef有一套几何流水线的说明,这里实在是没功夫写了。
接着首先判断这物体的SuperClassID是否为GEOMOBJECT_CLAS- S_ID,如果是,则再看它是否能转换为TriObject,即由三角形组成的物体,至于为什么要这样转,我只能说只有这个类可以返回一个Mesh,而通过Mesh 能够获得诸如顶点,法线,面等一般3D程序所需要的几何信息(这里只获取了该Mesh的面的个数)。
当然,对于一个Box,我们可能只想获得它的长宽高,所以,代码中又提供了另一个方法来返回其几何信息。
虽然只实现了这么短的代码,但却花了数天的时间,主要对3ds Max的结构不熟悉,加上SDK写得真叫一个乱,还好总算有些进展,正所谓万事开头难。
下一步将研究如何导出场景的光照,物体的纹理贴图等信息。