PROFILE
RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'Tip and Tech/Max script'에 해당되는 글 13

global studio2k_RollTestFloater1,studio2k_RollTestFloater2
rollout studio2k_RollTestParent "Parent"
(
label lbl1 "부모 플로터가 움직이면 아들도 움직인다 "
on studio2k_RollTestParent open do (
if studio2k_RollTestFloater2 != undefined then (
try(closeRolloutFloater studio2k_RollTestFloater2) catch()
)
studio2k_RollTestFloater2 = newRolloutFloater "Parent" 300 150 (studio2k_RollTestFloater1.pos.x+315) 75
addRollout studio2k_RollTestChildren studio2k_RollTestFloater2 rolledUp:false
)
on studio2k_RollTestParent moved pos do (
studio2k_RollTestFloater2.pos = (studio2k_RollTestFloater1.pos + [315,0])
)
)
rollout studio2k_RollTestChildren "Children"
(
label lbl2 "아들 플로터가 움직이면 부모는 움직이지 않는다 "
/* 이부분 주석 풀면 아들이 움직이면 부모도 움직임
on studio2k_RollTestChildren moved pos do (
studio2k_RollTestFloater1.pos = (studio2k_RollTestFloater2.pos - [315,0])
)*/
)

if studio2k_RollTestFloater1 != undefined then (
try(closeRolloutFloater studio2k_RollTestFloater1) catch()
)
studio2k_RollTestFloater1 = newRolloutFloater "Children" 300 150 40 75
addRollout studio2k_RollTestParent studio2k_RollTestFloater1 rolledUp:false



플로터 도킹... 서로를 부모로 인식하게도 가능할거 같은데?
바로 해결..ㅡ_ㅡ;;

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/02/27 12:26 2009/02/27 12:26
(
global std_set_mat_wire
local std_default_mat_name = "Std_Default_mat"
fn std_set_mat_wire = (
obj = for i in selection collect i
if obj.count == 1 then (
if (superclassof obj[1]) == GeometryClass and (classof obj[1]) != BoneGeometry and (classof obj[1]) != Biped_Object and (classof obj[1]) != PF_Source and (classof obj[1]) != Spray and (classof obj[1]) != Snow and (classof obj[1]) != Blizzard and (classof obj[1]) != PArray and (classof obj[1]) != PCloud and (classof obj[1]) != SuperSpray and (classof obj[1]) != ParticleGroup and (classof obj[1]) != mr_Proxy and (classof obj[1]) != dummy and (classof obj[1]) != Targetobject then (
if obj[1].wirecolor != black and obj[1].material == undefined then (
if (sceneMaterials [std_default_mat_name]) == undefined then (
std_set_sceneMaterials = Standardmaterial ()
std_set_sceneMaterials.name = std_default_mat_name
obj[1].material = std_set_sceneMaterials
obj[1].wirecolor = black
)
if (sceneMaterials [std_default_mat_name]) != undefined then (
obj[1].material = sceneMaterials [std_default_mat_name]
obj[1].wirecolor = black
)
)
)
)
)
callbacks.removeScripts #selectionSetChanged
callbacks.addScript #selectionSetChanged "std_set_mat_wire ()" id:#mz_smw
)


마야에 익숙해 있던 친구의 부탁으로 만들었던 스크립트 입니다.
기본적으로 오브젝트 생성시 Standardmaterial 머트리얼을 적용합니다.(뷰포트 그레이용) 그리고 와이어컬러를 블랙으로 놓습니다.(와이어 컬러가 블랙이아니며 머트리얼이 없는 경우에만 동작 합니다.)
selectionSetChanged callback 를 이용해서 오브젝트를 선택할때마다 스크립트는 활동(?)합니다.
기본적으로 지오메트리의 오브젝트들만 델수 있게 되어 있습니다..^^

사용자 삽입 이미지

사용자 삽입 이미지
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/02/12 10:11 2009/02/12 10:11

global test_floater

rollout test_roll_1 "test rollout 1" (
label lbl_test "test rollout 1"
)
rollout test_roll_2 "test rollout 2" (
label lbl_test "test rollout 2"
)
rollout test_subroll_1 "test subrollout 1" (
label lbl_test "test subrollout 1"
)
rollout test_subroll_2 "test subrollout 2" (
label lbl_test "test subrollout 2"
)

rollout test_control "test control" (
checkbutton ckb_roll_1 "rollout 1"
checkbutton ckb_roll_2 "rollout 2"
checkbutton ckb_subroll_1 "subrollout 1"
checkbutton ckb_subroll_2 "subrollout 2"
subrollout sub_roll "subrollout here" width:256 height:64 align:#center

on ckb_roll_1 changed state do (
if (state) then ( addrollout test_roll_1 test_floater )
else ( removerollout test_roll_1 test_floater )
)
on ckb_roll_2 changed state do (
if (state) then ( addrollout test_roll_2 test_floater )
else ( removerollout test_roll_2 test_floater )
)
on ckb_subroll_1 changed state do (
if (state) then ( addsubrollout sub_roll test_subroll_1 )
else (removesubrollout sub_roll test_subroll_1 )
)
on ckb_subroll_2 changed state do (
if (state) then ( addsubrollout sub_roll test_subroll_2 )
else ( removesubrollout sub_roll test_subroll_2 )
)
)

test_floater = newRolloutFloater "Hello" 512 512
addrollout test_control test_floater


출처:http://forums.cgsociety.org/showthread.php?t=699242

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/12/23 16:05 2008/12/23 16:05

(
--dotnet.loadassembly "System.Data"
rollout ro_test "test"
(
dotnetcontrol dg "System.Windows.Forms.DataGridView"

on ro_test open do
(
local colWidth = 160
local fromCol = dotNetObject "System.Windows.Forms.DataGridViewTextBoxColumn"
fromCol.headerText = "Original Textures"
fromCol.readOnly = true
fromCol.frozen = true
fromCol.width = colWidth

local toCol = dotNetObject "System.Windows.Forms.DataGridViewTextBoxColumn"
toCol.headerText = "New Textures"
toCol.width = colWidth

dg.columns.add fromCol
dg.columns.add toCol

dg.Location = dotNetObject "System.Drawing.Point" 10 10
dg.Width = 400
dg.Height = 400
dg.Visible = true

for i = 1 to 5 do
(
local row = #(dotNetObject "System.String" ("row str"))
dg.rows.add row
)
)
)

createdialog ro_test 500 500
)

                          -출처 Cgtalk.com
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/12/12 11:32 2008/12/12 11:32

프로젝트를 진행하면서 많은 사람들이 가장 쉽게 가장 큰 실수를 범하는 경우가 굉장히 많다..
그중 하나는 unit setup 을 잘못한채 작업을 다 진행하고 최종에서야 잘못됨을 알고 수정하는 경우를 많이 봤다..
본인도 그런실수를 할때가 종종 있는데..

이를 최소화 할수 있는 방법을 소개해볼까 한다.

Max root \Scripts\Startup 에 스크립트를 등록하면 맥스가 띠워질때 실행을 하게 된다.


fn std_viewport_setting = (
viewport.getLayout()
viewport.setLayout #layout_4hb
units.DisplayType = #Generic
gridPrefs.spacing = 16
)
callbacks.addscript #systemPostReset "std_viewport_setting()" id:#std_new_seting
callbacks.addscript #systemPostNew "std_viewport_setting()" id:#std_new_seting
std_viewport_setting()


callback을 이용해서 맥스가 reset 될때나 new 될때도 본스크립트는 동작하게 된다.

viewport.getLayout()
viewport.setLayout #layout_4hb

부분은 뷰포트의 레이아웃을 설정하는 부분이다..(삭제하여도 상관은 없다)

#layout_1 -- 1 viewport
#layout_2v -- 2 viewports, vertical split, both same size
#layout_2h -- 2 viewports, horizontal split, both same size
#layout_2ht -- 2 viewports, horizontal split, top smaller
#layout_2hb -- 2 viewports, horizontal split, top larger
#layout_3vl -- 3 viewports, 2 on left, 1 on right
#layout_3vr -- 3 viewports, 1 on left, 2 on right
#layout_3ht -- 3 viewports, 2 on top, 1 on bottom
#layout_3hb -- 3 viewports, 1 on top, 2 on bottom
#layout_4 -- 4 viewports, all same size
#layout_4vl -- 4 viewports, 3 on left, 1 on right
#layout_4vr -- 4 viewports, 1 on left, 3 on right
#layout_4ht -- 4 viewports, 3 on top, 1 on bottom
#layout_4hb -- 4 viewports, 1 on top, 3 on bottom

viewport.setLayout #layout_4hb
붉은 컬러 부분에 바꾸어서 넣으면 된다.(레이아웃은 지극히 본인취향)

units.DisplayType = #Generic
gridPrefs.spacing = 16

부분은 실질적인 unit setup 이다.
units.DisplayType = #Generic
마찬가지로 붉은 부분에는 아래의 옵션들로 교체가 가능하다.

#Generic
#Metric
#US
#custom

#Metric #US #custom 의 경우 units.DisplayType = #Generic 의 뒤부분에 아래의 코드를 삽입해주어야한다.

units.MetricType = #Millimeters

[참고]
#Millimeters
#Centimeters
#Meters
#Kilometers

위의 코드 또한 마찮가지로 참고 부분의 옵션으로 대체 가능하다.
#US #custom 의 경우에는 맥스 스크립트 레퍼런스의  3ds Max System Globals 항목 의 U 파트를 참고하면 될것이다.


gridPrefs.spacing = 16

부분은 뷰포트 그리드의 스페이스를 정의하는 부분인데 본인의 편의상 16unit 를 사용한다.프로젝트의 unit 에서 편의상 맞추어 주면 될것이다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/11/21 18:35 2008/11/21 18:35
studio2k:개발자로 살아가기
개발자로 살아가기
    Name
    Message
«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
전체 (220)
Gossip (160)
Portfolio (2)
Tip and Tech (31)
Script Download (3)
3D studio Max Scripts (20)
Photoshop scripts (3)
  1. 모바일스튜디오 (Mobile Studio)  2009
    소니 엑스페리아 안드로이드폰 Rachael UI 공개
  2. "Wish~!"  2008
    Unreal 3.x ED 통한 맵작업
  3. 도아의 세상사는 이야기  2008
    다기능의 가벼운 IE 기반 브라우저, TheWorld
  4. Conya In BackStreet  2005
    음악바톤이어받기ㅇ_ㅇ
  5. 젊은거장의 서재 속 이야기 - 시즌2  2005
    바보 이미 다 하고 있어요.
    전체 : 466137 오늘 : 10 어제 : 96