QQ聊天

随笔分类 -  MaxDevelopGuide

Max开发入门
摘要:View Code try(unRegisterRedrawViewsCallback DrawSelectedShapeVertexIndex) catch()Fn DrawSelectedShapeVertexIndex = ( GW.SetTransform(Matrix3 1) SelectedShapes = for tempObject in Selection where SuperClassOf tempObject == Shape Collect tempObject for tempShape in SelectedShapes do ( ... 阅读全文
posted @ 2011-09-24 13:32 SITT 阅读(597) 评论(0) 推荐(0)
摘要:MaxScript里开不了线程,但是可以用.Net的BackgroundWorker来做后台处理BackgroundWorkerFn BackgroundTcpListenerDoWork theSender theEvent = ( IPAddress = DotNetClass "System.Net.IPAddress" theIPAddress = IPAddress.Parse "127.0.0.1" theTcpListener = DotNetObject "System.Net.Sockets.TcpListener" 阅读全文
posted @ 2011-08-31 12:53 SITT 阅读(1308) 评论(1) 推荐(0)
摘要:自max9出现了64位,同时微软舍弃了ActiveX控件,大部分ActiveX控件在64位的max下就没得用了。而微软之外的公司的ActiveX控件,也大多没有64位的,比如Flash,不过好在现在FlashPlayer11的64位版本出现了。于是,又可以在MaxScript里面使用Flash做界面了。64位的Max需要安装64位的FlashPlayerhttp://labs.adobe.com/downloads/flashplayer11.htmlFlash里面使用fscommand可以发送字符串给Max,fscommand有两个参数,会一起发送。这里提供一个范例,将两个文字输入框的内容发 阅读全文
posted @ 2011-08-23 12:24 SITT 阅读(1142) 评论(0) 推荐(0)
摘要:Max当中使用一些用到了ActiveX的脚本工具时会报错,信息大多为 Cannot create the ActiveX control : MSComctlLib...一般是下图这样的对话框.大部分原因是因为64位的max中一些控件被淘汰,换用32位的max即可。64位max下的脚本需要重写一部分。如果你是用的32位的max,请往下看。================无废话一二三步骤版========================下载http://files.cnblogs.com/sitt/MSCOMCTL.zip解压缩运行解出的regsvrOCX.bat,如果问题没有解决,重启计算机后 阅读全文
posted @ 2011-08-22 10:22 SITT 阅读(1157) 评论(0) 推荐(0)
摘要:需要用到一个NGif的库,是国人编写的,不过到我写这个帖子的时候还不是以dll文件的方式提供,是给出的代码。这里我编译了一个dll.http://files.cnblogs.com/sitt/NGifDll.zip这个dll文件需要和脚本在同目录执行,脚本需要保存下,或者读者自己修改一下DotNet.LoadAssembly简单的生成Gif的MaxScript如下生成GiflocalPath = GetFilenamePath (GetSourceFileName())DotNet.LoadAssembly (localPath + "Ngif.dll")GifEncode 阅读全文
posted @ 2011-08-19 12:33 SITT 阅读(1435) 评论(0) 推荐(0)
摘要:MaxSDK中版本定义位于MaxSDK\Max9SDK\include\plugapi.h这个文件中的#define MAX_RELEASE主要用于对不同版本的判断,例如Max9之后的版本里,插件入口函数DllMain里用到的InitCustomControls这个函数就不起作用了,编译时会有警告提示(原因是之后的SDK里这个函数进行的初始化操作已经改为自动进行,无需手动调用了).一直到2012里,2012的SDK已经删掉了这个函数,然后如果依旧调用这个函数就无法完成编译了。为了一份代码可以同时编译数个版本,可以用如下方法。View Code BOOL WINAPI DllMain(HINST 阅读全文
posted @ 2011-07-22 07:04 SITT 阅读(805) 评论(3) 推荐(0)
摘要:可能许多人都希望自己的工具有一个比较方便的安装程序。这里我介绍一些都需要什么功能,以及可以选择什么。一般只需要使用mzp文件即可完成脚本工具的安装,具体可以参考MaxScript文档中 “Zip-file Script Packages”。缺点是,每个版本的Max需要安装时都要运行或拖拽这个mzp文件,另外,有时我们希望一些可以共享的文件只需要保留一份,例如大多数的脚本工具,而有版本针对性的例如MaxSdk的插件则按照相对应的版本安装。此外,程序同学可能并没有兴趣为了安装导出工具而去学习MaxScript。如果我们需要自己写一个安装程序,需要有以下几个功能:1,最好可以自动识别Max的安装路径 阅读全文
posted @ 2011-07-20 02:18 SITT 阅读(1480) 评论(2) 推荐(1)
摘要:最近忙一些事情,没写什么帖子,总要更新一下,于是我就将IPhysique翻出来编译了一下。现在是Max9-Max2012。这个插件起初是Autodesk放出来的MaxScript访问Physique的扩展,但是后来不再有更新,原因很简单了,Skin早就该替换掉Physique了但国内还有如此之多的人依赖Physique,很悲剧。 阅读全文
posted @ 2011-07-19 08:13 SITT 阅读(375) 评论(0) 推荐(0)
摘要:其实就是一个坐标转换Fn GetViewportRootPos = Mouse.ScreenPos - Mouse.PosGetViewportRootPos()try(DestroyDialog TestFollowViewport)catch()Rollout TestFollowViewport "TestFollowViewport"( Timer theTimer interval:100 on theTimer tick do ( SetDialogPos TestFollowViewport ( Mouse.ScreenPos - Mouse.Pos) ))C 阅读全文
posted @ 2011-07-11 17:28 SITT 阅读(469) 评论(0) 推荐(0)
摘要:Fn RotateViewPort inputAxis inputDegrees = ( ViewPortMatrix = inverse(ViewPort.GetTM()) RotationMatrix = (quat inputDegrees inputAxis ) as Matrix3 ViewPortMatrix *= RotationMatrix ViewPort.SetTM (inverse ViewPortMatrix))RotateViewPort [0,0,1] -1 阅读全文
posted @ 2011-07-08 10:44 SITT 阅读(288) 评论(0) 推荐(0)
摘要:悲剧的是,只能在32位版本下使用,需要Max2008或更高版本,如果需要在其他版本下,其实也并非不可,只是会比较麻烦,此外,这种东西找个引擎来做更简单一些View Code DotNet.loadAssembly "Microsoft.VisualBasic.dll"DotNet.loadAssembly "Microsoft.DirectX.DirectInput.dll"Global KeyboardDeviceSystemGuid = DotNetClass "Microsoft.DirectX.DirectInput.SystemGui 阅读全文
posted @ 2011-07-07 22:13 SITT 阅读(884) 评论(0) 推荐(0)
摘要:http://mwinapi.sourceforge.net/一个WindowsAPI的.Net封装,因为MaxScript调用.Net很方便,所以这个dll用起来也很舒爽http://www.nirsoft.net/utils/nircmd.html一个命令行程序,CMD可以用DosCommand去调用 阅读全文
posted @ 2011-07-05 17:45 SITT 阅读(708) 评论(0) 推荐(0)
摘要:首先需要去找一个汉字拼音表,玩命搜索即可,但是搜到的可能不全,难免要自己去补充。这里是我随便找了一个汉字拼音a 阿啊 ai 哎哀埃挨唉癌矮蔼艾爱嫒暧隘碍an 安氨鞍庵鹌铵俺埯岸按案暗 ang 肮昂盎 ao 凹遨嗷獒熬翱拗袄坳傲奥澳懊 ba 八扒叭巴芭吧疤捌拔跋把爸罢 bai 掰白百佰伯柏摆败拜 ban 扳颁班斑般搬板版办半伴扮瓣 bang 邦帮梆绑榜膀棒谤磅镑bao 包苞胞剥煲薄饱宝保堡报抱暴瀑曝爆 bet 杯卑碑背悲北贝备倍焙被辈臂ben 奔本苯笨 beng 崩嘣甭绷泵迸蚌蹦 bi 逼鼻比彼笔鄙币必毕闭敝弊辟壁避碧 bian 边编鞭贬扁匾变便遍辩辫biao 标彪膘表婊裱鳔 bie 瘪憋鳖别b 阅读全文
posted @ 2011-07-05 12:10 SITT 阅读(2691) 评论(1) 推荐(1)
摘要:最近在unity3d中使用魔兽世界的导出资源时,发现有些动画会有一些莫名其妙的残留帧,导致一个动作导进unity3d后的长度变成几分钟,并且很大一部分是毫无动作的,所以写了这个脚本来清除多余的帧。View Code Fn CleanOutRangeKeys inputObject = ( startTime = AnimationRange.Start endTime = AnimationRange.End for i = 1 to inputObject.numSubs do ( tempSubAnim = GetSubAnim inputObject i tempController = 阅读全文
posted @ 2011-06-30 17:22 SITT 阅读(1396) 评论(0) 推荐(0)
摘要:有人问我能否不创建窗口来使用Timer可以利用.Net来做,不过除了做一些在max里运行的游戏,似乎也看不到什么其他可用的情况,毕竟在整个max里面定时执行一个函数,不是什么好方法。View Code Fn TimerElapsed theSender TheEvent = ( if Geometry.count == 0 do Teapot() for tempGeo in Geometry do tempGeo.pos = random [-10,-10,-10] [10,10,10])DotNetTimer = DotNetObject"System.Timers.Timer& 阅读全文
posted @ 2011-06-27 17:49 SITT 阅读(888) 评论(1) 推荐(0)
摘要:有时候,我们希望可以从外部去操纵max,比如我前几天做的将kinect的动作信息发送至Max .Max本身提供了一个方式,它可以将自己注册成一个Ole自动化对象,默认是没有开启的。在Maxscript的自带文档 OLE Automation 章节有相关描叙。开启这个接口只需要导入一个注册表,文档中的注册表文件见 "OLE Automation --> MAXScript.reg - Registery file"章节,需要自行更改max的版本以及安装路径。或者可以将这段Max脚本放到max安装路径下的Scripts\StartUp注册OLE接口的MaxScript( 阅读全文
posted @ 2011-06-27 12:22 SITT 阅读(2784) 评论(1) 推荐(0)
摘要:--ActiveX版本rollout test "Test" width:350( --去掉visible可以显示出播放控制界面 ActiveXControl axmp "MediaPlayer.MediaPlayer" height:50 visible:false on test open do ( axmp.filename = "d:\\games\\小鬼的罗嗦.wav" --这个参数如果为0,则是一直重复,其他数字为重复次数 axmp.playCount =1 axmp.play() ))-- .Net版本SoundPlay 阅读全文
posted @ 2011-06-21 16:18 SITT 阅读(567) 评论(0) 推荐(0)
摘要:这个范例只是演示基本需要的东西,本身速度并不好并且只是针对单个Max文件操作。有需要的人自己修改。此外,用相对路径可以完全避免此类问题,有兴趣的看这里 http://www.cnblogs.com/sitt/archive/2011/03/31/1989846.htmlView Code Fn SetDirectoryAccessControlType inputDirectoryInfo = ( tempUserName = (DotNetClass "System.Environment").UserName fileSystemRights = (DotNetClas 阅读全文
posted @ 2011-06-16 12:14 SITT 阅读(2315) 评论(0) 推荐(0)
摘要:Fn SetDirectoryAccessControlType inputDirectoryInfo = ( tempUserName = (DotNetClass "System.Environment").UserName fileSystemRights = (DotNetClass "System.Security.AccessControl.FileSystemRights").Modify accessControlType = (DotNetClass "System.Security.AccessControl.AccessC 阅读全文
posted @ 2011-06-10 14:52 SITT 阅读(879) 评论(2) 推荐(0)
摘要:Fn SetKeyToInteger t dividing = if t > dividing then t = Ceil t.Frame else t= Floor t.FrameMapKeys $ SetKeyToInteger 0.5 #allKeys 阅读全文
posted @ 2011-04-02 00:23 SITT 阅读(456) 评论(1) 推荐(1)

QQ聊天