XPresso 편집기
새로운 익스프레션을 생성하기 위해서는 오브젝트 매니저에서 XPress 편집기를 열고 아무 오브젝트를 선택하고 태그 / 프로그래밍 태그 / XPresso를 선택합니다.
노드는 XPresso 익스프레션의 빌딩 블럭입니다. 노드는 애니메이션의 현재 프레임 수를 보고하는 것부터 오브젝트를 특정 위치로 설정하는 것까지 다양한 업무를 수행할 수 있습니다. 익스프레션을 구성하기 위해서는 필요한 노드를 생성하고 노드 입력과 출력 포트 사이에 와이어라고 하는 라인을 그려 노드를 연결합니다. 그 후 노드는 이러한 포트와 와이어를 통해 값을 서로 전달할 수 있습니다.
위의 그림은 두 개의 노드를 보여주고 있습니다: 하나는 큐브에 대한 것이며 다른 하나는 실린더에 관한 것입니다. 회전으로 이름 붙여진 두 개의 원들은 포트입니다. 적색 원 아래의 포트는 출력포트이며 값을 X그룹 및 다른 노드에 전달합니다. 청색 원 아래의 포트는 입력 포트이며 다른 노드나 X그룹으로부터 값을 전달 받습니다. 이 예제에서, 큐브의 회전 값은 실린더로 보내지고 있습니다. 이것은 뷰포트에서 실린더가 큐브와 동일한 방향으로 가리키도록 합니다.
XPresso를 가능한 빨리 배우기 위해 Cinema 4D 튜토리얼 메뉴얼의 튜토리얼을 통해 작업할 것을 권장하지만, 이해가 잘 되지 않는 부분이 있을 경우 전체적인 설명이 되어있는 이 레퍼런스를 찾으시기 바랍니다. 또한 주석이 첨부된 Cinema 4D CD의 다양한 예제 익스프레션을 찾을 수 있습니다. 주석을 읽음으로써 이러한 예제를 통해 많은 것을 배울 수 있으며 여러분 스스로가 변경해 볼 수도 있습니다.
X그룹은 노드, 다른 X그룹 및 와이어의 컨테이너입니다. 실제 컨테이너와 같이, X그룹은 관련 효율적인 조직화를 위해 관련 아이템들을 동일 박스 내에 담습니다. 익스프레션을 보다 쉽게 찾을 수 있으며 위치를 찾기가 수월하며 수정이 용이한 것을 알게 될 것입니다. 컨테이너로써의 역할뿐만 아니라 X그룹은 노드 및 다른 X그룹과 연결할 수 있습니다. 프로젝트에서 X그룹을 재활용 할 수 있도록 저장 및 불러오기가 가능합니다.
Cinema 4D 뷰포트와 유사한 방식으로 X그룹의 컨텐츠를 네비게이트 할 수 있습니다. 컨텐츠를 이동하거나 확대 축소하기 위해서는 X그룹의 우측 상단 코너의 이동 및 확대 아이콘을 드래그하십시오. 방향키를 눌러 컨텐츠를 이동할 수도 있습니다. X그룹에 포트를 추가하려면 X그룹의 입력 메뉴 (청색 정사각형) 및 출력 메뉴 (적색 정사각형)로부터 원하는 포트를 선택합니다.
X그룹을 타이틀 바로 최소화하려면 타이틀 바를 더블 클릭합니다. X그룹을 전체 창 크기로 복귀하려면 타이틀 바를 다시 더블 클릭합니다. X그룹을 이동하려면 타이틀 바를 드래그하십시오. X그룹의 크기를 재조정하려면 사이드나 코너를 드래그하시면 됩니다.
익스프레션 생성 시 X그룹을 편집할 수 있도록 종종 X그룹을 선택하여 설정들을 속성 매니저로 불어와야 할 때가 있을 것입니다. X그룹을 선택하려면 X그룹의 타이틀 바를 클릭합니다. 다중 X그룹을 선택하려면 그것들을 드래그 선택하거나 선택하고자 하는 X그룹을
속성 매니저의 노드 속성 페이지에서 입력 먼저라고 하는 옵션을 찾을 수 있습니다. 이 옵션이 켜져 있으면 선택한 X그룹 밖에 있는 노드들이 먼저 계산됩니다. 이것은 X그룹이 갱신된 값을 전달받을 수 있도록 X그룹이 노드로부터 값을 전달받을 때 특히 중요합니다.
이 옵션은 X그룹을 켜거나 끄도록 합니다. X그룹 내의 노드들은 X그룹이 활동 상태일 경우에만 계산됩니다. 또한 True 부울 값 1을 포트에 전달하여 노드 스위치를 켤 수 있습니다.
이 버튼을 이용하여 X그룹에 패스워드를 부여함으로써 보호할 수 있으며, 패스워드가 입력되기 전에는 X그룹의 컨텐츠를 숨길 것입니다.
X그룹을 잠그려면 우선 표시 / 잠금을 선택하여 X그룹의 컨텐츠를 잠급니다. 속성 매니저에서 잠금 버튼을 클릭합니다. 다이얼로그가 열리면 X그룹에 대한 패스워드를 입력합니다. X그룹은 이제 패스워드로 잠깁니다.
X그룹을 잠금 해제하려면 잠금 과정을 반대로 하면 됩니다. 우선 잠금 해제 버튼을 클릭하고 나타난 다이얼로그에 패스워드를 입력합니다. X그룹의 컨텐츠를 나타나게 하려면 기능 메뉴로부터 표시 / 잠금을 끄고 기능 뷰의 하위 메뉴로부터 원하는 표시 모드를 선택합니다.
노드는 기본적으로 익스프레션의 빌딩 블럭이며 오브젝트의 현재 위치를 보고하는 일에서부터 수학 연산을 수행하는 작업까지 다양한 업무를 수행하도록 설계되었습니다. 노드의 타입에 따라, 다양한 입력 및 출력을 포트라 불리는 노드에 추가할 수 있습니다. X그룹과 마찬가지로 입력 메뉴 및 출력 메뉴 (노드의 타이틀 바에서 청색 및 적색 정사각형)를 이용하여 이러한 포트들을 추가할 수 있습니다.
타이틀 바를 더블 클릭하여 노드를 최소화 또는 최대화 할 수 있습니다; 노드를 이동하려면 타이틀 바를 드래그합니다; 노드의 크기를 조정하려면 사이드나 코너를 드래그합니다. 노드를 클릭하여 선택하고 설정을 속성 매니저로 불러올 수 있습니다. 다중 노드를 선택하려면 선택하고자 하는 노드들을 드래그 선택하거나
속성 매니저에서 사용 옵션 및 노드 오른쪽 클릭 기능 메뉴의 옵션으로부터 노드를 켜거나 끌 수 있습니다. 이것에 대한 내용은 이장의 후반부에 설명되어있습니다.
노드를 이름을 변경하려면 노드를 선택하고 속성 매니저의 기본 속성 페이지에서 새로운 이름을 입력합니다. 노드의 디폴트 이름은 타입을 의미합니다. 노드의 이름을 변경할 경우 속성 매니저에서 타입을 확인할 수 있습니다. 또한 속성 매니저에서 노드의 데이터 타입을 설정할 수 있습니다; 이것은 노드가 정수나 문자열 등과 같이 어떤 데이터 타입을 다룰 것인지 정의합니다.
오브젝트, 재질, 태그 노드를 다른 오브젝트, 재질, 태그에 재할당할 수 있습니다. 오브젝트, 재질, 태그를 노드의 내부 (가령 보통 포트 이름이 나타난 부분)에 드래그 & 드롭하기만 하면 됩니다. 새로운 오브젝트, 재질, 태그가 적절하다고 하더라도 원본 포트들은 보존됩니다. 보존될 수 없는 포트들은 정의되지 않은 상태로 설정됩니다.
각각의 XPresso 노드는 이장의 후반부에 설명되어있습니다.
포트는 노드와 X그룹의 입력과 출력입니다. 포트를 추가하려면 입력 메뉴 (청색 직사각형) 또는 출력 메뉴 (적색 직사각형)로부터 원하는 포트를 선택합니다; 이 메뉴에서 이미 추가된 포트들은 희미한 색으로 변합니다.
적색 포트는 출력 포트이며 값을 다른 노드 또는 X그룹으로 전달합니다. 청색 포트는 입력 포트이며 노드나 X그룹으로부터 값을 전달 받습니다. 출력 포트를 입력 포트에 연결하기 위해서는 한 쪽의 포트의 원을 다른 쪽으로 드래그 & 드롭합니다. 와이어는 아래와 같이 포트를 연결합니다.
포트에 한정된 다양한 커맨드들은 포트의 오른쪽 클릭 기능 메뉴로부터 사용 가능합니다.
선택된 노드나 X그룹이 연결되지 않은 포트를 가지고 있을 경우 이러한 포트들은 속성 매니저의 파라미터 페이지에 나타납니다 (오브젝트 노드에 적용되지 않음); 이 페이지에서 값을 입력하여 이 포트에 값을 전달할 수 있습니다. 이것은 특히 특정 값으로 노드를 테스트 할 때 유용하게 쓰입니다. 속성 매니저는 또한 노드의 데이터를 전달할 수 있도록 합니다 (아래의 유저 데이터를 참조하시기 바랍니다).
포트의 이름을 표시하려면 마우스 포인터를 포트 위로 움직이면 이름이 XPresso 편집의 정보 바에 나타날 것입니다. (정보 바를 켜기 위해서는 XPresso 편집의 레이아웃 메뉴의 정보 바 옵션 표시를 켭니다). 포트 이름을 표시하려면 컨텍스 메뉴에서 포트 / 이름 표시를 선택합니다.
포트를 더블 클릭하면 연결이 해제도비니다. 포트가 이미 연결해제된 경우 포트를 더블 클릭하면 포트가 삭제됩니다. 포트의 순서를 변경하려면 Al 키를 누른 상태로 새로운 위치로 포트를 드래그 & 드롭 합니다.
요소 파라미터를 지정하는 포트들 역시 속성 매니저에서 표시될 수 있습니다:
유저 데이터 포트는 속성 매니저를 통해 값을 노드에 전달할 수 있도록 합니다.
노드와 X그룹이 값을 서로 주고받도록 하기 위해서는 먼저 필요한 포트를 생성하고 와이어를 이용하여 이 포트들을 연결합니다. 두 개의 포트 사이에 와이어를 생성하기 위해서는 한 쪽 포트의 원을 다른 쪽 포트의 원으로 드래그 & 드롭 합니다. 드래그하는 동안 마우스 포인터가 두 번째 포트에 근접하면 자동으로 스냅이 됩니다.
어떤 연결은 허용되지 않습니다. 예를 들어 입력 포트끼리 또는 출력 포트끼리는 연결할 수 없습니다. 또는 서로 맞지 않는 데이터 타입간의 포트 연결도 허용되지 않습니다. 와이어를 그리는 동안, 와이어의 컬러는 연결이 허용되는지 (녹색) 허용되지 않는지 (어두운 회색)를 표시하도록 변합니다.
출력 포트는 다중 입력 포트와 연결이 가능하기 때문에 여러 노드나 X그룹에 동일한 값을 전달할 수 있습니다. 그러나 입력 포트는 하나의 연결만 가능합니다.
하나의 출력 포트를 동일한 노드의 입력 포트에 연결하기 위해서는 노드를 복사하고 (
실수로 와이어를 엉뚱한 포트에 연결하였을 경우 와이어를 올바른 포트에 드래그 & 드롭하여 재연결할 수 있습니다. 와이어를 (포트가 아닌) 빈 공간에 드롭할 경우 와이어는 마우스 버튼을 떼는 순간 삭제됩니다. 포트의 오른쪽 클릭 기능 메뉴로부터 와이어 삭제를 선택하여 와이어를 삭제할 수도 있습니다.
익스프레션의 와이어가 꼬였을 경우 각 포트를 새로운 위치로
와이어는 자동으로 적절한 데이터 타입으로 변환할 것입니다. 예를 들어 72.163과 같은 실수 값을 정수 타입의 노드에 전달할 경우 연결된 와이어는 실수 값을 자동으로 정수로 변환합니다. 이 경우 72입니다.
각 노드와 X그룹은 정수, 벡터 또는 컬러 등과 같은 값의 타입을 정의하는 데이터 타입을 갖고 있습니다. 서로 다른 데이터 타입을 사용하는 두 개의 노드를 연결할 경우 노드 사이의 와이어는 타입이 호환 가능한 경우에 한해서 데이터 타입을 자동으로 변환합니다. 예를 들어 상수 노드가 3.45라는 실수 값을 데이터 타입이 정수로 설정되어있는 결과 노드에 전달하였을 경우 값은 자동으로 정수로 변환됩니다. - 이 경우 3입니다.
어떤 노드들은 변경될 수 없는 고정된 데이터 타입을 가지고 있지만 대부분의 노드들은 속성 매니저에서 데이터 타입을 변경할 수 있습니다.
이 데이터 타입은 컬러 성분인 적색, 녹색, 청색으로 구성됩니다. RGB 값은 벡터로 해석될 수 있습니다 - 따라서 컬러 값 R:10, G:75, B:0은 벡터 10;75;0와 동일합니다. 이것은 예를 들어 컬러를 사용하여 오브젝트의 위치 또는 회전 벡터를 컨트롤할 수 있음을 의미합니다.
링크 데이터 타입은 태그, 재질 및 오브젝트에 대한 정보뿐만 아니라 Cinema 4D 씬의 다양한 요소에 대한 정보를 포함합니다. 링크 타입은 다른 데이터 타입으로 변환할 수 없습니다. 링크 데이터 타입의 목적은 보다 자세한 관찰을 위해 (오브젝트, 재질, 태그 등과 같은) 씬 요소를 선택할 수 있도록 합니다. 예를 들어 링크 데이터 타입을 이용하여 속성 매니저에서 유저 데이터 박스를 추가할 수 있습니다. 이 박스에 재질, 태그, 오브젝트 등을 드래그 & 드롭하여 이들을 할당할 수 있습니다. 아래의 오브젝트를 참조하시기 바랍니다.
이 데이터 타입은 파일 경로를 저장할 수 있도록 합니다. 예를 들어 사운드 노드는 파일이름 데이터 타입을 이용하여 불러낼 사운드 파일의 경로를 저장합니다.
이 요소는 텍스쳐, 가령 이미지 파일이나 쉐이더에 대한 참조를 포함합니다. 이 데이터 타입은 재질 채널 내에서와 같이 재질을 사용할 때에만 사용될 수 있습니다.
렌즈 글로우 데이터 타입은 전체 데이터 셋에 대한 컨테이너입니다. - 이 경우 조명에 대한 렌즈 글로우를 컨트롤하는데 필요한 모든 정보입니다.
체크박스 데이터 타입은 두 개의 값만이 가능합니다: True 또는 False. 이 값들은 숫자 1(True)과 0(False)을 표현합니다. 수학 연산에 부울 값을 사용할 수 있지만 부울 값은 0과 1만을 가질 수 있다는 점을 기억하시기 바랍니다. 여러 부울 값을 조합하고자 할 때 논리 노드를 사용하십시오.
정수 데이터 타입은 음수, 영, 양수의 모든 수 (분수 제외)를 지원합니다. 소수 뒤의 수들은 무시됩니다; 분수가 포함되어있을 경우 부정확한 결과를 초래할 수도 있습니다. 모든 숫자 및 벡터 포맷에 대해 정수 데이터 타입을 사용할 수 있습니다.
벡터를 정수나 실수로 변환할 때 벡터의 길이가 SQRT(V.x*V.x+V.y*V.y+V.z*V.z)로부터 자동으로 계산되며, 여기에서 V.x, V.y 및 V.z는 벡터의 X, Y 및 Z 성분이며 SQRT는 제곱근 함수입니다. 반면에 정수나 실수가 벡터로 변환될 때 값들은 벡터의 X, Y, Z 성분으로 사용됩니다. 예를 들어 실수 12.5는 벡터 (12.5;12.5;12.5)로 변환됩니다.
정수와는 달리, 실수는 분수가 될 수 있습니다. 실수의 전형적인 예는 Pi, 가령 3.141592654입니다. 복잡한 계산이 포함되거나 정확한 결과를 원할 경우 실수 타입을 사용하시기 바랍니다. 실수는 벡터나 정수로 변환될 수 있습니다. 실수가 정수로 변환될 때에는 소수 부분이 제거됩니다 (가령 정수로 변환될 때 실수는 반올림됩니다).
벡터 데이터 타입은 3D 공간에서 위치 및 회전을 다루는데 중요합니다. 오브젝트 위치, HPB 각도, 컬러 및 포인트 좌표가 벡터로 저장됩니다. 값들은 벡터에 하나씩 저장됩니다. 예를 들어 위치의 순서는 (X 위치: X, Y 위치: Y, Z 위치: Z) 및 회전의 순서는 (H 각도; P 각도; B 각도)입니다. Cinema 4D에서 벡터는 항상 세 개의 성분을 가지고 있습니다. 벡터를 정수로 변환할 경우 개별 성분보다는 벡터의 길이가 변환됩니다. 매트릭스와 함께 벡터를 사용할 수도 있습니다.
정규화된 벡터는 방향은 같지만 길이가 1인 벡터입니다.
매트릭스는 오브젝트의 위치 벡터 및 각 오브젝트 축에 대한 세 개의 벡터를 포함하는 오브젝트의 글로벌 매트릭스와 같은 벡터의 그룹입니다. 축 벡터는 오브젝트의 방향뿐만 아니라 크기 (크기는 각 축 벡터의 길이로 정의됩니다)도 표현합니다. 따라서 글로벌 매트릭스는 오브젝트의 위치, 크기, 회전에 접근할 수 있도록 합니다.
4개의 벡터가 다음의 글로벌 매트릭스의 레지스터에 저장됩니다: 위치 벡터는 V0에 (옵셋벡터라고 함); X축은 V1에; Y축은 V2에; Z축은 V3에 저장됩니다. 이러한 레지스터들을 이용하여 오브젝트 Y축인 V2와 같은 어떠한 벡터로 읽거나 덮어쓸 수 있습니다.
시간 데이터 타입은 애니메이션의 현재 시간에 접속할 수 있습니다. 이 값은 초당 프레임에 영향을 받는다는 사실을 기억하시기 바랍니다. 예를 들어 초당 25 프레임일 경우 프레임 24에 대한 시간 값은 정확히 1초입니다. 예를 들어 초당 1번 튀는 공을 만들거나 오브젝트가 특정 시간 영역 동안 다른 오브젝트를 따라가게 만들 수 있습니다. 일/시를 참조하시기 바랍니다.
문자열 데이터 타입은 텍스트 및 캐릭터 문자열에 대한 것입니다. 문자열은 문자, 숫자, 특수 문자를 포함합니다. 예를 들어 문자열 데이터 타입을 이용하여 유저가 텍스트 박스에 이름을 입력할 수 있도록 할 수 있습니다. 게다가, XPress 와이어는 문자열의 숫자 시퀀스를 벡터, 매트릭스, 다른 숫자 포맷으로 변환할 수 있습니다. 예를 들어 문자열 12;4;5을 벡터 (12;4;5) 대신 노드에 전달할 수 있습니다.
오브젝트 타입은 링크의 서브-타입이며 오브젝트 데이터에만 사용될 수 있습니다. 데이터 타입 중 이 데이터 타입은 오브젝트의 글로벌 및 로컬 매트릭스에 접근할 수 있도록 합니다. 위의 링크를 참조하시기 바립니다.
그라데이션 데이터 타입은 그라데이션을 표현하는 많은 숫자로 구성됩니다. 이것은 다른 데이터 타입으로 변환 불가능합니다. (각 컬러가 벡터로 변환될 수 있다 하더라도 컬러에 접근할 수 있도록 그라데이션에서 컬러의 위치를 지정할 수 있는 방법이 없습니다).
포함 및 제외 목록을 사용하여 조명을 특정 객체로 제한 할 수 있습니다. 포함 및 제외 목록에는 개체 목록이 포함됩니다. 이것은 광원용으로 특별히 설계되었으므로 변환 할 수 없습니다. 예를 들어 사용자 데이터 필드에서 태그, 재질 또는 객체를 읽으려면 객체 또는 조명을 사용하세요.
우선 순위 데이터 타입은 X우선 순위 및 숫자 값뿐만 아니라 계산 순서에 대한 자세한 정보를 포함합니다. 이 데이터 타입은 태그의 우선 순위 포트에 대해 사용됩니다.
폰트 데이터 타입은 그것이 트루타입 또는 포스트스크립트로 사용될지를 포함하여 선택한 폰트에 대한 정보를 저장합니다. 예를 들어 폰트 데이터 타입을 이용하여 텍스트 스플라인의 모습을 다양하게 변경할 수 있습니다. 폰트 데이터 타입은 다른 타입으로 변경될 수 없습니다.
시간 데이터 타입과 대조하여, 일/시는 여러분 컴퓨터의 현재 시스템 시간 (포맷은 시:분:초입니다)과 시스템 날짜를 묻습니다. 예를 들어 광원의 현재의 실제 시간에 맞는 광원의 위치와 컬러를 설정하는 썬 익스프레션을 생성할 수 있습니다.
스플라인 데이터 타입으로 속성 매니저에서 그래프를 이용하여 스플라인을 그릴 수 있습니다. 그래프는 수평 축을 따라 최소 X에서 최대 X까지 변하며 수직 축을 따라 최소 Y에서 최대 Y까지 변합니다.
X-풀은 XPresso 편집에 노드를 추가할 수 있는 신속한 방법을 제공합니다. X-풀은 Cinema 4D의 모든 노드를 포함하며, 여러분의 풀을 추가할 수 있으며, 각 노드는 요구에 맞게 맞추어집니다. 예를 들어 정수 뺄셈 (데이터 타입은 정수로, 펑션은 뺄셈으로 설정)을 위해 사칙연산 노드를 생성할 필요가 있다고 가정해봅시다. 여러분이 그러한 노드를 생성할 때마다 수동으로 이러한 파라미터들을 변경하기 보다는, X-풀에 맞추어진 노드를 생성할 수 있습니다. 여러분이 노드를 필요로 할 때 풀로부터 그것을 드래그하여 이미 정수 뺄셈을 위해 설정된 XPresso 편집에 가져다 놓을 수 있습니다.
돋보기 모양의 아이콘을 클릭하면 텍스트 라인 필터가 열립니다. 이것을 사용하여 모든 하위 디렉토리를 표시하지 않고 검색할 노드만을 볼 수 있습니다.
이것은 실시간으로 동작하는 표시 필터입니다. 실행해야 하는 것은 표시할 노드와 관련된 텍스트를 입력하기만 하면 됩니다. 이 텍스트 일부 또는 완전히 일치하는 요소가 모두 표시됩니다. 대소문자는 결과에 영향을 주지 않습니다. X 버튼을 클릭하면 텍스트 필드가 지워집니다.
X-풀을 열기:
이 커맨드를 이용하여 여러분의 노드 배치에 대한 새로운 풀을 생성할 수 있습니다. 열린 다이얼로그를 이용하여 풀에 대한 경로를 정의하십시오 (그룹은 유저 폴더 내에서 라이브러리 / x노드에 저장됩니다); 풀은 자동으로 저장되며 여러분이 Cinema 4D를 재시작할 때마다 사용 가능합니다. 풀에 노드 배치를 추가하려면 먼저 XPresso 편집에서 원하는 노드를 배치하고 노드를 풀에 드래그 & 드롭 합니다.
이 커맨드는 풀 파일을 읽도록 합니다.
풀로부터 선택한 프리셋이나 폴더를 삭제합니다.
프리셋 이름을 변경합니다. 예를 들어 정수 뺄셈에 대한 사칙연산 노드를 배치하였을 경우 그것의 이름을 뺄셈 정수로 변경하기를 원할 수도 있습니다.
새로운 폴더를 생성합니다. 이것은 보다 훌륭한 조직화를 위해 폴더에 여러분의 풀을 정렬하도록 합니다. X-풀 또는 XPresso 편집으로부터 폴더 내에 가져다놓을 노드를 폴더로 드래그 & 드롭하십시오.