Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

MaxScript정리

No description
by

Hong WonJu

on 7 January 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of MaxScript정리

MAX SCRIPT

홍원주 - 3DS MAX는 강력한 스크립트 언어를 내부에 포함

- 맥스에서 지원하는 거의 모든 기능을 제어가능

- 맥스 스크립트 외 플러그인 SDK라는 것이 존재함. 하지만 SDK 자체가 상당히 방대하고, 디버깅하기가 어렵기 때문에 초보자가 쉽게 접근하기 어려움

- 맥스 스크립트는 간략한 문법적 구조를 갖추고 있어 초보자들의 접근이 용이함 Max Script란? Max Plugin의 장점
- C++로 개발하기 때문에 속도가 빠름
- Max의 디테일한 기능까지 사용이 가능

Max Plugin의 단점
- C++ 프로그램 언어를 알아야만 개발이 가능
- 3DS MAX 버전별로 대응( 맥스 버전이 바뀌면 재컴파일 필요)

-----------------------------------------------------------

Max Script의 장점
- 기본적인 문법의 스크립트를 사용하기 때문에 쉽게 익힐 수 있음
- 3DS MAX 버전별로 대응할 필요(모든 버전에서 동일한 스크립트가 사용가능)

Max Script의 단점
- 속도가 느림
- 스크립트 엔진에서 제공하지 않는 기능은 사용하기가 힘듬
- 디버깅이 힘듬 Max Plugin과 Max Script의 차이점 [ 변수 선언 및 정의 ]

- 보통 스크립트 언어처럼 변수 이름 앞에 데이터 타입을 붙이지 않음

- 데이터 타입은 사용자가 사용하기에 따라 결정됨

- 세미콜론(;)은 붙이지 않음(문단의 끝은 개행을 하면 인식됨)

ex) name = "홍길동"
age = 26
or
name = "홍길동"; age = 26;

(한줄로 쓰고 싶다면 변수 정의의 끝은 세미콜론으로 표시)

※ 대소문자를 구분하지 않음 (코딩할때 유의) Max Script 기초 사용법 - 출력 함수 print와 format이 있음
- 출력된 내용은 MaxScript Listener에서 확인가능
- print <value>
- format <format_string> <value>

ex) name ="홍길동"
age = 26
print name
print age
format "name= %, age = %" name age

- format은 c언의 printf와 유사함, %만 써줘도 자동으로 데이터타입을 판별함 Max Script 기초 사용법 "Hello World" 출력하기 1. 3ds Max9 실행

2. 우측 상단에서 MAXScript메뉴 클릭

3. New Script 클릭

4. print "Hello World" 입력 후 alt+e

5. MAXScript Listener로 출력 확인

※ 프로그램의 시작점(main 함수)이 없음
코딩 순서대로 프로그램이 실행됨 - if <expr> then <expr> [else <expr> ]

- if <expr> do <expr>

ex)

-> if a > b do (print d; print e)

-> if mybox.height == 10 then mybox.width = 20

->if b.height == 10
then b.width = 20
else b.width = 10 Max Script 기초 사용법 for i = 1 to 5 do
(
print i
)
출력 : 1,2,3,4,5

1부터 5까지 반복, 증가값을 정해주지 않았기때문에 1씩 증가


for i = 1 to 5 by 2 do
(
print i
)
출력 : 1,3,5

by는 증가 값 Max Script 기초 사용법 [ for문 ] [ if문 ] [ 출력 ] - while <expr> do <expr>

while x>10 do
(
print (x-=1)
) Max Script 기초 사용법 [ while문 ] Max Script 기초 사용법 [ 배열 ] - #( <expr> , <expr> )

a = #(10,20,3.14,"test")
a[1]=5
print a

출력 : 5,20,3.14,test

- Max Script에서는 배열에 서로 다른 데이터 타입을 넣을 수 있음

- 인덱스는 0이 아닌 1부터 시작 Max Script 기초 사용법 [ 배열 함수 ] append
copy
deepCopy
deleteItem
join
findItem
insertItem
sort
qsort
등이 있음

append 함수가 c++에서 vector와 비슷한 기능임

자세한 사용법은 Max Script Help 파일에서 찾아보자. Max Script 기초 사용법 [ 배열 함수] append
copy
deepCopy
deleteItem
join
findItem
insertItem
sort
qsort
등이 있음

append 함수는 c++의 vector와 유사함

함수의 사용법은 MaxScript Help 파일에서 알아보자. print <value>
format <fmt_string> { <value> }

출력 함수 - print, format이 있음

ex)
name ="홍길동"
age = 26

print name
print age

format"이름 : %, 나이 : %" name, age

format은 c언어의 printf와 유사하고 %만 써줘도 데이터타입을 자동으로 판별해줌 Max Script 기초 사용법 if <expr> then <expr> [else <expr> ]
if <expr> do <expr>

ex)
-> if a > b do
(
print d
print e
)

-> if mybox.height == 10 then mybox.width = 20

-> if b.height == 10
then b.width = 20
else b.width = 10 (function | fn) <name> { <parameter> } = <expr>
함수 이름 파라메터

ex)
fn sum num1 num2 =
(
return num1+num2
)
num = sum 1 2 --함수 호출

print num

출력 : 3

함수 블럭을 중괄호가 아닌 소괄호를 사용
함수 호출 부분을 보면 ()를 쓰지 않음 Max Script 기초 사용법 [ 함수 ] Max Script 기초 사용법 [ 구조체 ] struct <struct_name> ( <member> { , <member> } )

struct test
(
name,
fn Init n =
(
name =n
)
)
test = test() --객체 선언
test.Init "홍길동"
n = test.name

format"Name : %\n"n
print n

출력 : 홍길동 utility ui_items "ui items"

(

bitmap a1 bitmap:(bitmap 50 50)

button a2 "button"

checkbox a3 "checkbox"

checkbutton a4 "checkbutton"

colorpicker a5 "colorpicker: "

combobox a6 "combobox:" items:#("1/2", "1/4", "1/8") height:5

dropdownlist a7 "dropdownlist:" items:#("1/2", "1/4", "1/8")

edittext a8 "edittext: "

label a9 "label"

listbox a10 "listbox: " items:#("1/2", "1/4", "1/8" ) height:3

mapbutton a11 "mapButton"

materialbutton a12 "materialbutton"

pickbutton a13 "pickbutton"

progressbar a14

radiobuttons a15 "radiobuttons: " labels:#("lbl 1", "lbl 2", "lbl 3")

spinner a16 "spinner: "

slider a17 "slider: "

timer a18

) User Interface 기타 자료 Max Script 기초 사용법 [ File 입출력 ] - <BinStream>fopen <String fileName> <String mode>

ex) fin = fopen "D:\\test.txt" "rb"

- <Boolean>fclose <BinStream>

ex) fclose fin

- <Integer>ftell <BinStream>

ex) ftell fin

- <Boolean>fseek <BinStream><Integer> <#seek_set | #seek_cur | #seek_end>

ex) fseek fin 1 #seek_set

사용법은 c와 유사하다 Max Script 기초 사용법 [ File 입출력 ] 파일을 읽고 쓰는 것은 c의 fread()와 fwrite()와는 형태가 좀 다름

<Integer>ReadByte <BinStream> [#signed | #unsigned]
<Integer>ReadShort <BinStream> [#signed | #unsigned]
<Integer>ReadLong <BinStream> [#signed | #unsigned]
<Float>ReadFloat <BinStream>
<String>ReadString <BinStream>


<Boolean>WriteByte <BinStream> <Integer> [#signed | #unsigned]
<Boolean>WriteShort <BinStream> <Integer> [#signed | #unsigned]
<Boolean>WriteLong <BinStream> <Integer> [#signed | #unsigned]
<Boolean>WriteFloat <BinStream> <Float>
<Boolean>WriteString <BinStream> <String> Max Script 기초 사용법 [ Point ] 2D
[ <expr>, <expr> ]

3D
[ <expr>, <expr>, <expr> ]

ex)
[x, y, z]
[10, 10, 10]
[sin x, cos y, tan z]


- Methods -

length <point3>
dot <point3> <point3>
cross <point3> <point3>
normalize <point3>
distance <point3> <point3> UI 예제 rollout test "Title"
(
UI 추가
)
createDialog test 300 400 창 만들기 UltraEdit 에서

MaxScript 사용하기 MaxScript

Help 경로 : 3dsmax9 폴더 -> help 폴더 ->maxscript.chm 1.하이라이트가 적용된 maxscript.uew 파일을 울트라에디터 설치 폴더 -> wordfiles 폴더 안에 복사함

2.울트라 에디터 메뉴 -> Advanced -> Configuration -> Editor Display -> Syntax Highlighting에서 maxscript.uew파일이 있는 wordfiles폴더 경로를 설정 해줌 The End
Full transcript