사용자 삽입 이미지


------사용법--------
Selected Objects 와 Each Objects 는 아래의 모든 설정에적용됩니다.
Affect Pivot Only : Off 버튼을 누르면 뷰포트의 피봇설정모드가 활성화됩니다.(이는 확인이 필요한경우 활성화시킨후 사용하시면 됩니다.)
Reset All : 오브젝트 의 Transform,Scale,Pivot,XForm 을 Reset 합니다.

--Bounding box Pivot Setting --

-Selected Objects 를 선택했을경우
선택되어진 모든 오브젝트의 전체크기의 XYZ 의 min Center Max 값을 기준으로 설정합니다.
-Each Objects 를 선택했을경우
선택되어진 각각의 오브젝트 크기의 XYZ 의 min Center Max 값을 기준으로 설정합니다.

--Object Pivot Setting --
Pickobject : 하나의 다른 오브젝트를 선택 하여 다른 오브젝트의 피봇값으로 설정합니다.(XYZ 따로 설정 가능합니다)
SetVertex : 버텍스를 선택후 클릭하면 피봇의 위치를 버텍스의 위치에 설정합니다.
[0,0,0] : 선택한 오브젝트의 피봇위치를 0,0,0으로 설정합니다.
Center : 선택한 오브젝트의 피봇위치를 x center,y center,z center 으로 설정합니다.

------3DSMAX 8.0 - 3DSMAX 2010 사용가능        (테스트환경 2010)--------


PivotSetting and Export 의 마이너 업데이트 격입니다..
Pivot설정기능만 가지고 있습니다.같이 있던 export 부분은 강화되어 분리 되었습니다.
설치법의 경우 공지사항의 "Studio2k's Script 설치법" 의 .exe 부분을 참고해주세요.


Fn 보기

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
05 14, 2009 16:05 05 14, 2009 16:05
studio2k
3D studio Max Scripts/SetPivot 05 14, 2009 16:05

트랙백 주소 : http://studio2k.teamnop.com/tt/trackback/281

댓글을 달아 주세요

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

오브젝트의 사이즈를 정해서 스케일할수 있는 툴입니다.
맥스의 Scale 와 별반 차이는 없습니다..
맥스의 Scale 는 % 로 적용하는 반면 Width Resize tool 은 실제 수치로 Scale 할수 있습니다.
MM , Cm , M 외 다른 unit 에 대한 현제 수치가 표시 않되고 Generic unit 에 대한 표시가 되는 버그(?) 가 있습니다. --수정완
자세한 설명은 아래 사용 동영상을 보시는것이 빠를것같습니다.

사용자 삽입 이미지


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
05 11, 2009 14:32 05 11, 2009 14:32
studio2k

트랙백 주소 : http://studio2k.teamnop.com/tt/trackback/250

댓글을 달아 주세요

  1. 비밀방문자 2009年 03月 25日 05時 44分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

    • studio2k 2009年 03月 25日 11時 54分  수정/삭제

      음...현제 대른 형태로 개발중입니다...조만간에 현제 프리뷰 되어있는 스크립트와 비공개되어 있는 스크립트들 모두 공개 하려 하고 있습니다..
      음..관심 가져 주셔서 감사합니다..^^

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

     Global Thread,MainThread,SecondaryThread
     Fn WorkThread sender e =
     (
       for i = 1 to Thread.spnLoops.value do
         (
         If MainThread.CancellationPending Then
          (
          e.cancel = true
          Thread.lbl2.text = "Primary Thread Aborted"
          )    
           else
           (
           -- test for object 'Box01'
           -- Box01'.height = i
                             --max zoomext sel               
                                
                             -- or do some nonsense calculation
                             local asum = i*pi
                             local prog  = (i as float)/Thread.spnLoops.value * 100           
                             --    MainThread.ReportProgress prog asum               
                             Thread.lbl2.text = asum as string
                             Thread.pb2.value = prog
                             sleep 0.05                       
                         )
                 )               
                 Thread.lbl2.text = "Primary Thread Complete"
                 Thread.pb2.value = 0
     )
     Fn WorkThread2 sender e =
     (   
                     for i = 1 to Thread.spnLoops.value do
                     (
                     If SecondaryThread.CancellationPending Then
                         (
                         e.cancel = true
                         Thread.lbl3.text = "Secondary Thread Aborted"
                         )                   
                         else
                         (
                         -- do some nonsense calculation
                         local asum = i/pi
                         local prog  = (i as float)/Thread.spnLoops.value * 100           
                         --    MainThread.ReportProgress prog asum               
                         Thread.lbl3.text = asum as string
                         Thread.pb3.value = prog
                         sleep 0.025                           
                         )   
                     )   
                    
                     Thread.lbl3.text = "Secondary Thread Complete"
                     Thread.pb3.value = 0
      )
      Fn MxsFn =
     (   
                     for i = 1 to Thread.spnLoops.value do
                     (
                     -- test for object 'Box01'
                     --    Box01'.height = i
                     --        max zoomext sel           
                        
                     -- or do some nonsense calculation
                     local asum = i*pi
                     local prog  = (i as float)/ Thread.spnLoops.value * 100
                     Thread.lbl1.text = asum as string
                     Thread.pb1.value = prog
                     sleep 0.025           
                     )   
                    
     Thread.lbl1.text = "MXS Fn Complete"
     Thread.pb1.value = 0
      )
      Fn UpdateThread sender e =
     (   
     format "FnValue -  % Percentage done - % \n" e.progresspercentage e.userstate
     )
      -- Specify the BackgroundWorker Class
          MainThread = dotnetobject "System.ComponentModel.BackGroundWorker"
         --    MainThread.WorkerReportsProgress = true
         MainThread.WorkerSupportsCancellation = true       
         dotNet.addEventHandler MainThread "DoWork" WorkThread
         --dotNet.addEventHandler MainThread "ProgressChanged" UpdateThread
        
         SecondaryThread = dotnetobject "System.ComponentModel.BackGroundWorker"
         SecondaryThread.WorkerSupportsCancellation = true
         --    SecondaryThread.WorkerReportsProgress = true
         dotNet.addEventHandler SecondaryThread  "DoWork" WorkThread2
         --dotNet.addEventHandler SecondaryThread  "ProgressChanged" UpdateThread
        
     rollout Thread "Running Multiple Threads in DotNet" width:728 height:147
     (
         GroupBox grp1 "MaxScript Function Execution" pos:[7,28] width:192 height:114
         GroupBox grp2 "DotNet BackgroundWorker Class" pos:[202,7] width:522 height:135
         progressBar pb1 "" pos:[19,88] width:168 height:16 color:(color 255 255 0)
         GroupBox grp3 "Function Value" pos:[18,44] width:171 height:39
         button btnMXstart "Start" pos:[16,110] width:173 height:23
         label lbl1 "" pos:[24,61] width:160 height:18
         progressBar pb2 "" pos:[394,33] width:168 height:25 color:(color 0 255 0)
         GroupBox grp4 "Function Value" pos:[215,22] width:171 height:39
         button btnDNstart "Start Primary" pos:[566,31] width:109 height:28
         label lbl2 "" pos:[220,37] width:161 height:18   
         progressBar pb3 "" pos:[394,70] width:168 height:24 color:(color 30 10 190)
         GroupBox grp18 "Function Value" pos:[215,62] width:170 height:39
         button btnDNboth "Run Both Threads" pos:[214,105] width:461 height:28
         label lbl3 "" pos:[220,78] width:158 height:18
         button btncancel1 "Cancel" pos:[678,31] width:42 height:28       
         button btnDN2 "Start Secondary" pos:[566,67] width:109 height:28
         button btnCancel2 "Cancel" pos:[678,66] width:42 height:28
         spinner spnLoops "Number of Loop Iterations" pos:[114,8] width:84 height:16 range:[10,10000,100] type:#integer
         button btncancelboth "Cancel" pos:[679,104] width:42 height:28
    
         on Thread open do
         (       
             try
             (
             If MainThread.IsBusy do MainThread.CancelAsync()
             )
             catch()   
         )
        
         on btnDN2 pressed do
         (
         if not SecondaryThread.IsBusy do SecondaryThread.RunWorkerAsync()
         )
        
         on btnMXstart pressed do    MXSFn()
        
         on btnDNstart pressed do
         (
             if not MainThread.IsBusy do MainThread.RunWorkerAsync()       
         )
        
         on btnDNboth pressed do
         (
             if (not MainThread.IsBusy) and (not SecondaryThread.IsBusy) do
             (
             MainThread.RunWorkerAsync()
             SecondaryThread.RunWorkerAsync()
             )
         )
        
         on btncancel1 pressed do
             If MainThread.IsBusy Then MainThread.CancelAsync()
    
         on btnDN2 pressed do
             if not SecondaryThread.IsBusy do SecondaryThread.RunWorkerAsync()
        
         on btnCancel2 pressed  do
             If SecondaryThread.IsBusy Then SecondaryThread.CancelAsync()
        
         on btncancelboth pressed  do
         (
         if MainThread.IsBusy do MainThread.CancelAsync()
         if SecondaryThread.IsBusy do SecondaryThread.CancelAsync()
         )
     )
     createdialog thread  style:#(#style_toolwindow, #style_sysmenu)


굉장히 흥미로운 스크립트...
후.....내머리속에선 언제 이런게 나올까?ㅡㅡ;;;

출처 : cgsociety.org
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
08 8, 2008 12:50 08 8, 2008 12:50
studio2k
Tip and Tech/Max script 08 8, 2008 12:50

트랙백 주소 : http://studio2k.teamnop.com/tt/trackback/254

댓글을 달아 주세요

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

사용자 삽입 이미지



배치 익스포터 입니다.
씬의 선택오브젝트의 익스포트 또는 선택되어진 오브젝트 각각으로 익스포트 합니다.
익스포트시 피봇의 위치 (X = Center Y = Center Z = Min) 으로 위치시킨후 0,0,0 으로의 이동은 선택사항이 될수 있습니다.

또한 각각의 오브젝트를 익스포트가 아닌 Max file 로의 저장도 가능합니다.

(현제의 기능은 위와같습니다.)
추후 개별로 피봇과 위치(0,0,0)의 변경시 씬에서의 위치또한 저장할수 있게 만들려고 합니다.
임포터 또한 만들려고 하고 있습니다..

계획된 임포트의 기능
- 씬의 각 오브젝트의 위치값 (export의 기능)을 읽어 오브젝트와 위치에 맞게 구성

해야할일 XML 공부..............
아마 임포트와 익스포트시 위치저장은 제가 XML 을 어느정도 공부하고 만들지 않을까 합니다..쿠..쿨럭..



크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
08 4, 2008 15:16 08 4, 2008 15:16
studio2k

트랙백 주소 : http://studio2k.teamnop.com/tt/trackback/251

댓글을 달아 주세요

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

사용자 삽입 이미지

얼마전 포스팅 했던 Shadermap GUI Preview 영상 입니다.

ps.개인적으로 필요하신분은 답글로 요청 부탁드립니다..
아무래도 저쪽에서도 GUI를 팔고 있는 입장에서 바로 공개하긴 껄끄럽고요.
개인적인 사용이시라면 보내 드리도록 하겠습니다.--오류로인한 중단.



http://studio2k.teamnop.com/tt/274         이곳에 공개되어 있습니다..^^

2008/07/07 - [Tip and Tech/Max script] - Crazybump & Shadermap

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
07 21, 2008 15:27 07 21, 2008 15:27
studio2k

트랙백 주소 : http://studio2k.teamnop.com/tt/trackback/248

댓글을 달아 주세요

  1. 비밀방문자 2008年 07月 29日 12時 07分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

    • studio2k 2008年 07月 30日 09時 52分  수정/삭제

      지금 보내 드렸습니다..^^
      자세한내용은 관련 메일 확인해 주세요..^^

  2. 비밀방문자 2008年 08月 01日 15時 48分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  3. 비밀방문자 2008年 08月 04日 00時 45分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  4. 비밀방문자 2008年 08月 10日 22時 01分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  5. 비밀방문자 2008年 09月 22日 15時 25分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  6. 비밀방문자 2008年 10月 08日 22時 06分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  7. 비밀방문자 2008年 12月 12日 18時 36分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  8. 비밀방문자 2008年 12月 13日 01時 44分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  9. 비밀방문자 2008年 12月 21日 10時 17分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  10. 이영원 2009年 03月 02日 03時 24分  수정/삭제  댓글쓰기

    안녕하세요~우연히 홈페이지를 방문하게 되었습니다.
    게임그래픽 배경쪽에 종사하고있는 사람이구요..
    홈피구경하다가 필요한자료가 있길래 요청드립니다.
    제메일은kikky34@hotmail.com이구요..
    번거로우시겠지만 이쪽으로 보내주시면 감사드리겠습니다..^^

  11. 비밀방문자 2009年 03月 06日 18時 00分  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

    • studio2k 2009年 03月 20日 17時 37分  수정/삭제

      http://studio2k.teamnop.com/tt/274
      이곳에 공개되어 있습니다..^^

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

Powerd by Textcube, designed by criuce