반응형
 바이패드를 박스모드로 변환시켜주는 툴입니다. 이 툴은 애니메이터들에게 필요한 툴로서 바이패드를 박스형태로

변환시켜 모델 원본을 보는데 방해를 받지 않고 애니메이션 작업을 할 수 있도록 하는 툴입니다.

 

1. 툴 화면


 

2. 전체 바이패드 전환


 

3. 선택 바이패드 전환


 

- 이 스크립트 제작을 통해 배운 내용

1. for문의 사용법 숙지(반복문)

2. 주석처리 방식 숙지

3. true와 false 수치를 글로별변수로 선언하여 제어하는 방법 숙지

4. 메크로 버튼을 만들어 나만의 메뉴를 생성하는 방식

 

코드 원문

--==========================================================================================================
--==========================================================================================================

-- 바이패드 박스 전환툴 : 바이패드를 박스모드로 변환해 해주는 Tool입니다.
-- 버그나 관련 내용 문의 요청 언제나 환영

-- 제작 : Taeyo

--==========================================================================================================
--=====================================================================================================


--박스모드와 플로터에 대한 글로벌변수 선언---------
Global BipedToBoxFloater
Global isBoxMode = true


--===========================================================================================================

---롤아웃지정------

--===========================================================================================================
rollout BipChange "바이패드 박스모드로 변환"
(

 --================================================================================== 
 -----버튼 지정----
 --================================================================================== 
 button BtnBipToBox1 "선택바이패드만전환"
 button BtnBipToBox3 "바이패드 박스모드전환"

 
 --================================================================================== 
 -----선택된 바이패드만 전환시킴-----
 --==================================================================================
 on BtnBipToBox1 pressed do
 (
  
  ----------------------------------------------------
  --SelObj선언---
  ----------------------------------------------------
  SelObj = $
  

  ----------------------------------------------------
  --선택된거 없을때---
  ----------------------------------------------------
  if selection.count == 0 then
   (
    messagebox "선택된게 없습니다."
    return 0
   )
  
  ----------------------------------------------------
  --for문을 통해 선택된 오브젝트가 무엇인지 판별----
  ----------------------------------------------------
    for SelObj in $selection do
   ( 
  
   if iskindof SelObj Biped_Object then
   (
    SelObj.boxmode = isBoxMode
   )
   else
   (
    SelObj.boxmode = isBoxMode
    messagebox "바이패드가 아닙니다."
    return 0
   )
  
   
  )
  
  ---------------------------------------------------------------------
  --isBoxMode로 선언된  글로벌변수를 통해 on/off를 지정할수 있는 함수--------------------------
  ---------------------------------------------------------------------
  if isBoxMode then
  (
   isBoxMode = false
  )
  else
  (
   isBoxMode = true
   return 0
  )
  clearselection()
 )
 
 --==================================================================================
 -------전체 씬을 뒤져서 바이패드만 골라 박스모드로 변환시켜줌------------------------
 --==================================================================================
 on BtnBipToBox3 pressed do
 (
  
  
  ----------------------------------------------------
  --for문을 통해 전체 씬의 오브젝트를 검색함--------------------------
  ----------------------------------------------------
  for obj in objects do
  (
   if iskindof obj Biped_Object then
    obj.boxmode = isBoxMode
  )
  
  ----------------------------------------------------
  --isBoxMode로 선언된  글로벌변수를 통해 on/off를 지정할수 있는 함수--------------------------
  ----------------------------------------------------  
  if isBoxMode then
  (
   isBoxMode = false
  )
   else
  (
   isBoxMode = true
   return 0
  )
   
 )
   
  
)

--===========================================================================================================

------재실행시 기존 창 지우기 위해 트라이 캐치 실행---------------------------------------------

--===========================================================================================================
try(CloseRolloutFloater BipedToBoxFloater) catch()


--===========================================================================================================

---실행창 생성--------------------------------------------

--===========================================================================================================

BipedToBoxFloater = newrolloutfloater "바이패드 박스로 변환툴" 200 130
addrollout BipChange BipedToBoxFloater

반응형
반응형

 

1.메쉬 LOD 변환툴


- LOD를 적용할 메쉬를 선택하여 수치를 정하여 메쉬를 변환시켜주는 툴입니다.

 

1. 툴 화면

 

2. 비대칭 실행시 적용화면 - 원본 오브젝트의 50퍼센트의 LOD를 적용하여 비대칭 메쉬를 새로 생성합니다.


 

 3. 대칭 실행시 적용 화면 - 원본 오브젝트의 50퍼센트의 LOD를 적용하여 대칭 메쉬를 새로 생성합니다.

 

- 이 스크립트 제작을 통해 배운 내용

1. if문의 사용법 숙지(조건문)

2. roll과 button을 사용하여 메뉴 창 생성하는 법

3. 오브젝트의 모디파이의 속성을 제어하는 방법

  

코드 원문

global TEST

rollout noskin "스킨없을때"
 
(
 spinner noskin1 "버텍스수치" range:[0,100,50] type:#integer
 button btn1 "비대칭"
 button btn2 "대칭"
 
 
 on btn1 pressed do
 (
  if selection.count != 1 then
  (
   messagebox "한개만 선택하세요"
   return 0
  )
  
  if $.modifiers[#skin] == undefined then
  
  (
   local VF = noskin1.value
   
   a= $
   copyobj = copy$
   select copyobj
   
   --modPanel.setCurrentObject $.baseObject
   modPanel.addModToSelection (MultiRes ()) ui:on
   $.modifiers[#MultiRes].reqGenerate = on
   $.modifiers[#MultiRes].vertexPercent = VF
   maxOps.CollapseNodeTo $ 1 off
   
   clearselection()
   
   delete a
   
   select copyobj
  )   
  else
  (
   messagebox "스킨없애시오"
   return 0
  )
  
 )
 ----------스킨 없고 대칭 일때-------------------
 on btn2 pressed do
 (
  if selection.count != 1 then
  (
   messagebox "한개만 선택하세요"
   return 0
  )
  
  if $.modifiers[#skin] == undefined then
  
  (
   local VF = noskin1.value
   
   
   a= $
   copyobj = copy$
      
   
   ---헬퍼박스 생성----
   Box lengthsegs:1 widthsegs:1 heightsegs:1 length:5000 width:5000 height:5000  pos:[0,0,0]  name:"Helper_Box"
   select $Helper_Box
   max rotate
   toolMode.coordsys #local
   rotate $(angleaxis -90 [0,1,0])
   move $ [-0.1,0,0]
   macros.run "Modifier Stack" "Convert_to_Poly"
   
  
   select copyobj
   
   modPanel.addModToSelection (Vol__Select ()) ui:on
   $.modifiers[#Vol__Select].level = 1
   $.modifiers[#Vol__Select].volume = 3
   $.modifiers[#Vol__Select].node = $Helper_Box
   modPanel.addModToSelection (Edit_Poly ()) ui:on
   subobjectLevel = 1
   max delete
   maxOps.CollapseNode $ off 
   modPanel.addModToSelection (MultiRes ()) ui:on
   $.modifiers[#MultiRes].reqGenerate = on
   $.modifiers[#MultiRes].vertexPercent = VF
   modPanel.addModToSelection (symmetry ()) ui:on
   $.modifiers[#Symmetry].threshold = 0
   maxOps.CollapseNode $ off
    
   clearselection()
   
   delete a 
   delete $Helper_Box
      
   select copyobj
  )   
  else
  (
   messagebox "스킨없애시오"
   return 0
  )
    
 )

)


----------------스킨있을때-------------------------------------

rollout yeskin "스킨있을때"
 
(
 spinner yeskin1 "버텍스수치" range:[0,100,50] type:#integer
 button btn3 "비대칭"
 button btn4 "대칭"
 
 on btn3 pressed do
 (
  if selection.count != 1 then
  (
   messagebox "한개만 선택하세요"
   return 0
  )
  
  if $.modifiers[#skin] != undefined then
  (
   local VF = yeskin1.value
   
   a= $
   copyobj = copy$
   select copyobj
   
   $.modifiers[#Skin].Enabled = off
   modPanel.setCurrentObject $.baseObject
   modPanel.addModToSelection (MultiRes ()) ui:on
   $.modifiers[#MultiRes].reqGenerate = on
   $.modifiers[#MultiRes].vertexPercent = VF
   maxOps.CollapseNodeTo $ 2 on
   $.modifiers[#Skin].Enabled = on
   
   clearselection()
   
   delete a
   
   select copyobj
  )  
 
  else
  (
   messagebox "스킨을 넣으세요"
  )
 
 )
  
 ------------스킨 있고 대칭 일때---------------------------------------------------------------
 on btn4 pressed do
 (
  if selection.count != 1 then
  (
   messagebox "한개만 선택하세요"
   return 0
  )
  
  if $.modifiers[#skin] != undefined then
  
  (
   local VF = yeskin1.value
   
   
   a= $
   copyobj = copy$
      
   
   ---헬퍼박스 생성----
   Box lengthsegs:1 widthsegs:1 heightsegs:1 length:5000 width:5000 height:5000  pos:[0,0,0]  name:"Helper_Box"
   select $Helper_Box
   max rotate
   toolMode.coordsys #local
   rotate $(angleaxis -90 [0,1,0])
   move $ [-0.1,0,0]
   macros.run "Modifier Stack" "Convert_to_Poly"
   
  
   select copyobj
   
   $.modifiers[#Skin].Enabled = off
   modPanel.setCurrentObject $.baseObject
   modPanel.addModToSelection (Vol__Select ()) ui:on
   $.modifiers[#Vol__Select].level = 1
   $.modifiers[#Vol__Select].volume = 3
   $.modifiers[#Vol__Select].node = $Helper_Box
   modPanel.addModToSelection (Edit_Poly ()) ui:on
   subobjectLevel = 1
   max delete
   maxOps.CollapseNodeTo $ 2 off
   modPanel.setCurrentObject $.baseObject
   modPanel.addModToSelection (MultiRes ()) ui:on
   $.modifiers[#MultiRes].reqGenerate = on
   $.modifiers[#MultiRes].vertexPercent = VF
   modPanel.addModToSelection (symmetry ()) ui:on
   $.modifiers[#Symmetry].threshold = 0
   maxOps.CollapseNodeTo $ 2 on
   $.modifiers[#Skin].Enabled = on
    
   clearselection()
   
   delete a 
   delete $Helper_Box
      
   select copyobj
  )   
  else
  (
   messagebox "스킨을 달라"
   return 0
  )
 )
  
)


TEST = newrolloutfloater "공부용 LOD시스템" 200 200

addrollout noskin TEST
addrollout yeskin TEST

 

반응형

+ Recent posts