이 튜토리얼의 결과에 대한 인상을 얻으려면 첨부된 비디오를 시청하는 것이 가장 좋습니다.
작업 파일 PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d에는 장면의 가장 중요한 요소가 이미 준비되어 있으므로 Dynamics로 즉시 작업을 시작할 수 있습니다. 작은 장난감 자동차를 만들기 시작할 것이므로 오브젝트 관리자의 신호등 버튼을 사용하여 장면의 모든 방해 요소를 일시적으로 숨깁니다.

씬 설정하기
장면의 구성을 간단히 살펴봅시다. 씬에는 자동차 외에도 나중에 장애물이 되는 구 오브젝트, 풍경 오브젝트가 통합된 하이퍼넙스 오브젝트, 주변 환경과 조명을 위한 지면, 하늘 및 조명 오브젝트가 포함되어 있습니다.
자동차의 구성을 최대한 단순하고 이해하기 쉽게 만들기 위해 자동차는 차체와 네 개의 바퀴로만 구성됩니다. 양수 X 방향으로 정렬되어 자동차의 지정된 위치에 배치된 총 4개의 튜브 오브젝트가 바퀴 역할을 합니다.
나중에 커넥터와 모터를 쉽게 통합할 수 있도록 각 바퀴의 위치에는 약어(vl = 앞쪽 왼쪽)가 붙어 있습니다.
차체는 스플라인에서 돌출 NURBS 오브젝트를 생성합니다. 물론 다른 자동차나 차체를 사용할 수도 있습니다. 중요한 것은 나중에 커넥터 또는 다이내믹스 바디 태그를 통해 올바르게 통합하는 것입니다.
차량의 너비는 돌출 NURBS 오브 젝트의 설정 대화 상자에 저장됩니다. 돌출 중 X 방향의 이동으로 인해 발생합니다. 차체의 둥근 모서리는 자연스럽고 사실적인 모양을 제공합니다.
하이퍼넙스 오브 젝트에는 자동차의 오프로드 삽입에 사용할 수 있는 지형을 제공하는 랜드스케이프 오브젝트가 숨겨져 있습니다. 하이퍼넙스 세분화 덕분에 너무 각진 지형을 만들지 않고도 지형을 효율적으로 분할할 수 있습니다.
지형을 주행하는 동안 액션을 조금 더 추가하기 위해 몇 가지 장애물을 통합했습니다. 제 경우에는 반경이 50cm인 단순한 구형 오브젝트로, 나중에 MoGraph를 사용하여 지형이나 랜드스케이프 오브젝트에 임의로 배포합니다.
커넥터와 모터로 차량 제작하기
장난감 자동차부터 살펴봅시다. 우리의 목적을 위해 어떤 기능을 수행해야 할까요?
먼저 자동차가 회전할 수 있도록 바퀴가 부착되어야 하고, 자동으로 움직일 수 있도록 바퀴에 구동 장치가 있어야 합니다. 그리고 당연히 바퀴가 지면에 있다는 사실부터 시작해서 충돌을 인식해야 합니다.
새로운 시네마 4D 다이내믹스를 통해 이 기능을 제공하려면 관련 요소에 다이내믹스 바디 태그가 있어야 다이내믹스 엔진에서 이를 인식할 수 있습니다.
먼저 오브젝트 관리자에서 4개의 바퀴를 선택하고 시뮬레이션 > 다이내믹스 메뉴를 통해 모두 리지드 바디로 정의합니다.
네 개의 바퀴는 모두 동일한 동적 속성을 가지므로 네 개의 다이내믹스 바디 태그를 선택한 상태로 두고 원하는 파라미터를 설정합니다.
다이내믹스 페이지에서 기본 설정을 그대로 사용할 수 있습니다. 바퀴가 지면과 즉시 접촉하도록 즉각적인 트리거링이 중요합니다.
충돌 측면에서는 실린더 X축을 모양으로 설정하여 다이내믹스의 충돌 감지를 돕습니다. 이는 궁극적으로 휠의 모양과 일치하며 다이내믹스 계산의 성능을 향상시킵니다. 차량이 지면에 닿을 때 아주 약간만 튕기도록 탄성을 10%로 설정했습니다. 그 대신 마찰력을 120%로 높여 바퀴가 지면에 잘 접지할 수 있도록 합니다.
이제 차량의 다음 요소인 차체로 넘어가 보겠습니다. 안타깝게도 Extrude NURBS 오브젝트는 축 위치가 좋지 않아 차체의 기준점으로 적합하지 않으므로 상위 널 오브젝트인 Car를 넣습니다. 그 축은 자동차의 중앙에 위치합니다.
따라서 시뮬레이션 > 다이내믹스 메뉴를 통해 널 오브젝트 Car에 다이내믹스 바디 태그를 리지드 바디로 할당합니다.
다이내믹스 바디 태그의 설정 대화 상자에서 자동차에 대한 트리거링도 즉시 시작합니다.
충돌 페이지에서 차체를 인식할 수 있도록 차량의 계층 구조를 고려해야 합니다. 이를 위해 계층 구조를 복합 충돌 모양으로 설정하고 볼록한 선체 또는 움직이는 메시를 최상의 모양으로 선택합니다.
다른 충돌 속성은 동일하게 유지할 수 있습니다. 결국 차량은 기본적으로 네 바퀴로 서 있고 반드시 전복되지는 않기 때문입니다.
원하는 차축이 차량의 무게 중심으로 사용되도록 하려면 질량 페이지로 잠시 전환해야 합니다.
여기서 자체 무게 중심 옵션을 활성화하지만, 정의된 축에서 벗어나지 않으려면 X, Y 및 Z 오프셋 값은 0으로 유지합니다.
지금 애니메이션을 시작하면 차량이 무너질 것입니다. 5개의 다이내믹스 바디만 정의했고 Cinema 4D는 (아직) 구성 관계에 대해 아무것도 알지 못하기 때문에 이는 놀라운 일이 아닙니다.
이제 커넥터로 이를 바꾸고 있습니다. 첫째, 커넥터를 사용하여 바퀴를 차량에 부착하고, 둘째, 바퀴 축을 중심으로 회전을 가능하게 하며, 셋째, 지형을 통과하는 경로에 적합한 휠 서스펜션을 동시에 구현합니다.
시뮬레이션>동역학 메뉴에서 첫 번째 커넥터를 가져옵니다.
각 휠에는 고유한 커넥터가 있습니다. 왼쪽 앞바퀴부터 시작하여 새로 생성된 커넥터의 이름을 적절히 변경합니다. 커넥터가 휠의 위치를 인수하려면 함수 메뉴에서 전송 도구를 활성화하고 휠을 객체 필드로 드래그하여 전송합니다.
할당 버튼을 클릭하면 커넥터가 지정된 휠과 같은 위치에 배치됩니다.
다음 커넥터도 같은 방법으로 생성합니다. 이번에는 오른쪽 앞쪽 휠에 대해 생성합니다. 또한 적용 명령을 사용하여 해당 휠의 위치를 이 커넥터에 할당합니다.
뒷바퀴를 계속하기 전에 앞바퀴의 커넥터를 올바르게 정렬합니다. 이를 위해 커넥터를 선택하고 속성 관리자에서 노란색 힌지 부분의 방향 각도를 사용하여 바깥쪽으로 회전합니다. 이렇게 하면 오른쪽 앞바퀴의 각도는 90°, 왼쪽 앞바퀴의 각도는 -90°가 됩니다.
이제 동일한 절차를 사용하여 커넥터가 있는 두 개의 뒷바퀴를 올바른 위치에 장착하고 올바른 회전으로 설정할 수 있습니다. 아래 그림은 위에서 본 4개의 커넥터를 배치한 모습입니다 .
커넥터를 선택하지 않은 상태에서도 커넥터를 표시하려면 커넥터 설정 대화 상자의 표시 페이지에서 항상 표시 옵션을 활성화하면 됩니다. 차량에 더 잘 맞도록 커넥터의 크기를 약간 줄이세요.
이제 마침내 커넥터의 올바른 기능을 결정해야 합니다. 결국 우리는 자동차에 스프링 액슬과 경첩이 없기를 원합니다. 이 작업은 객체 페이지에서 수행되며, 여기서 네 개의 커넥터 모두에 대한 휠 서스펜션 유형을 정의합니다.
네 개의 휠 서스펜션 모두에 대해 다음 설정을 할 수도 있으므로 네 개의 커넥터를 선택한 상태로 둡니다. 커넥터를 바인딩하기 위한 첫 번째 오브젝트로서 null 오브젝트인 Auto를 오브젝트 A로 필드에 드래그합니다.
스프링 경도에 20 값을 선택하고 스프링 댐핑, 즉 스프링이 돌아오는 속도에 대해 20% 값을 선택합니다.
Y 방향의 하한과 상한을 각각 20cm의 오프셋으로 활성화합니다. 차량이 이러한 한계에 도달할 가능성은 낮지만 결과적으로 장면이 더 선명해질 것입니다.
이제 개별 커넥터 또는 휠 서스펜션을 관리합니다. 각 커넥터에 대해 조정해야 할 유일한 조정은 바인딩을 위한 두 번째 오브젝트입니다. 이를 위해 각 커넥터에 속한 휠을 오브젝트 B 필드로 드래그합니다.
네 개의 커넥터 또는 휠 서스펜션을 모두 설정한 후에는 오브젝트 계층 구조에서 차량에 통합합니다. 이를 널 오브 젝트 "Car"의 하위 오브젝트로서 바퀴 근처에 배치합니다 .
장난감 자동차에 아직 빠진 것은 스스로 움직일 수 있도록 구동 장치입니다. 지형에 따라 사륜구동이 바람직할 수도 있지만 이 예제에서는 앞바퀴 두 개만 모터로 구동하도록 하겠습니다. 두 개의 모터를 사용하면 개별 바퀴에 동력을 전달하는 것이 물리적으로 더 정확하기 때문입니다.
시뮬레이션>동역학 메뉴를 통해 첫 번째 모터를 씬에 추가합니다.
커넥터와 마찬가지로 모터의 이름도 구동되는 휠에 맞게 변경합니다. 여기서 모터는 왼쪽 앞바퀴를 구동합니다.
함수 메뉴의 적용 도구를 사용하여 모터가 휠의 위치를 대신하도록 합니다. 할당 버튼을 클릭하면 모터가 원하는 위치에 배치되고 정렬만 하면 됩니다.
좌표 페이지의 속성 관리자를 사용하여 이 작업을 수행합니다. 노란색 회전 방향이 휠의 회전 방향과 일치하도록 90°의 방향 각도를 사용하여 모터를 회전합니다.
모터는 설정 대화 상자의 개체 필드에 바인딩됩니다. 이 경우 앞쪽 왼쪽 휠을 오브젝트 A 필드로 드래그합니다. 드라이브의 경우 모터에 400°의 각 목표 속도와 50의 토크를 지정합니다.
같은 방식으로 이제 앞쪽 오른쪽 바퀴를 구동하기 위해 다른 모터를 추가합니다. 이름을 적절하게 변경하고 전송 도구를 사용하여 해당 휠의 위치를 모터로 다시 전송합니다.
또한 속성 관리자를 사용하여 두 번째 모터를 올바른 방향으로 회전하고 이번에는 앞쪽 오른쪽 바퀴를 오브젝트 A로 전송합니다.
두 번째 모터는 자연스럽게 각 목표 속도와 토크에 대해 동일한 파라미터를 받습니다 .
이제 드라이브가 차량에 올바르게 설치되었음을 의미합니다. 시뮬레이션 중에 에디터가 명확하게 정리된 상태를 유지할 수 있도록 모터를 차량의 오브젝트 계층 구조에 하위 오브젝트로 포함시키는 것이 좋습니다.
지금까지는 장난감 자동차가 허공으로 떨어질 수 있기 때문에 최종적으로 자동차를 주행하기 전에 안정적인 표면이 필요합니다.
첫 번째 테스트를 위해 그리고 나중에 사용할 기본 레이어로 바닥을 충돌 오브젝트로 만듭니다 . 이를 위해 시뮬레이션>동역학 메뉴를 통해 바닥 오브젝트를 선택하고 해당 동역학 바디 태그를 할당합니다.
순수한 콜리전 오브 젝트에서와 마찬가지로 설정 대화 상자는 매우 명확합니다. 우리는 주로 마찰 값에 관심이 있습니다 . 바퀴가 빠르게 발판을 찾고 제대로 가속할 수 있도록 마찰 값을 100%로 설정했습니다.
이제 재생 버튼을 누르면 장난감 자동차가 저절로 움직입니다. 나중에 자동차에 작은 제어 시스템을 추가할 예정이지만 지금은 지형을 처리하겠습니다.
다이내믹스와 모그래프 요소로 씬 확장하기
이전에는 오브젝트 관리자를 통해 파라메트릭 오브젝트로 비활성화되어 보이지 않았던 랜드스케이프 오브젝트를 이제 언덕이 많은 지형으로 사용할 수 있습니다. 지면 오브젝트와 마찬가지로 먼저 지형을 콜리전 오브젝트로 정의해야 합니다. 이를 위해 시뮬레이션>다이나믹스 메뉴를 통해 상위 하이퍼넙스 오브 젝트에 콜리전 오브 젝트로 다이내믹스 바디 태그를 할당합니다.
설정 대화 상자의 콜리전 페이지도 이 콜리전 오브젝트에서 특히 중요합니다. 여기서 충돌 유형으로 스태틱 메시가 필요하므로 나중에 자동차가 표면의 모든 범프를 인식할 수 있습니다. 지면 오브젝트와 유사하게 여기에도 높은 마찰 값인 100%를 할당합니다.
자동차가 지형에 어떻게 대처하는지 테스트해 봅시다. 이를 위해 먼저 속성 관리자에서 Z 좌표를 사용하여 전체 자동차 그룹을 3000cm로 이동합니다. 이제 자동차는 이동 방향이 준비되었으며 추진력을 가지고 지형을 향해 나아갈 수 있습니다.
재생 버튼을 클릭하면 장난감 자동차가 언덕이 많은 지형을 용감하게 통과하는 모습을 볼 수 있습니다. 장면을 좀 더 흥미롭게 만들기 위해 장애물도 배치했습니다.
장애물의 시작점은 이미 구오브젝트의 형태로 제공됩니다. 복제된 구체가 나중에 자동차를 방해할 뿐만 아니라 밀려나도록 하려면 구체를 강체로 정의해야 합니다. 원칙적으로 구체 자체에 다이내믹스 바디 태그가 할당되는지 복제 오브젝트에 할당되는지는 중요하지 않습니다. 첫 번째 변형을 사용하면 각 클론 유형에 고유한 동적 속성을 부여할 수 있으므로 더 유연하게 사용할 수 있습니다.
따라서 구형 오브젝트에 필요한 다이내믹스 바디 태그를 리지드 바디로 할당해 보겠습니다. 평소처럼 시뮬레이션 > 다이내믹스 메뉴에서 찾을 수 있습니다.
구에 대한 다이내믹스 바디 태그의 설정 대화 상자에서 다이내믹스 페이지의 트리거링을 충돌 시로 설정합니다. 즉, 공이 스스로 움직이지 않고 자동차나 다른 공이 충돌을 트리거할 때만 반응하도록 설정합니다.
물체 모양이 단순하기 때문에 자동 충돌 감지에 의존 하며, 마찰력을 80% 증가시켜 공이 최대한 지면에 닿도록 하여 원치 않는 튕김 없이 지형 위로 굴러가도록 합니다.
이제 공에 동적 속성을 부여하여 지형에 공을 분산시킬 수 있습니다. 이를 위해 모그래프 메뉴에서 복제 오브젝트를 사용합니다.
오브젝트 관리자를 사용하여 구 오브젝트를 클론 오브 젝트에 클론으로 할당합니다. 구의 중심을 기준점으로 사용하는 파라메트릭 구를 사용하고 있기 때문에 구 클론을 배치하면 클론의 절반이 지형에 갇히게 됩니다.
이를 방지하고 그에 따라 구를 반경만큼 위로 이동하려면 설정 대화 상자의 변환 페이지에서 오프셋을 설정하면 됩니다. 구를 Z 방향, 즉 구의 반경만큼 50cm 이동합니다.
설정 대화 상자의 개체 페이지에서 클론의 복제 및 배포에 대한 실제 설정을 합니다.
먼저 오브젝트 모드를 선택합니다. 결국 랜드스케이프 오브젝트를 사용하여 클론을 배포하려고 합니다. 그런 다음 앞서 언급한 풍경 개체를 이 목적을 위해 제공된 개체 필드에 드래그합니다.
클론은 오브젝트의 표면에 배포되어야 하며, 물론 그 수는 직접 결정할 수 있습니다. 자동차가 불필요하게 많은 수의 공을 치울 필요가 없도록 최대 80개를 권장합니다.
아래 그림에서 렌더링의 현재 상태를 확인할 수 있습니다. 공이 가로 오브젝트에 잘 분포되어 있지만 여전히 모두 같은 방향을 가리키고 있습니다. 하지만 이 작은 문제는 랜덤 이펙터를 사용하면 빠르게 해결할 수 있습니다.
장면에 통합되는 즉시 복제 오브젝트에 무작위 이 펙터를 동작 장소로 할당하려면 오브젝트 관리자에서 복제 오브젝트를 선택한 다음 MoGraph>이펙터 메뉴에서 무작위 이펙터를 가져옵니다.
이펙터의 설정 대화 상자에서 매개변수 페이지의 변환 매개변수를 찾습니다. 구체는 모든 축을 가로질러 회전해야 하므로 각도 매개변수만 변경하면 됩니다. 90°의 각도는 넓은 범위의 회전을 위한 충분한 여유를 제공하기에 충분합니다.
테스트 렌더링을 보면 이제 랜덤 효과 덕분에 구가 랜드스케이프 전체에 무작위로 분포되어 있음을 알 수 있습니다.
이제 장난감 자동차를 장애물에 풀어놓을 차례입니다. 앞으로 몇 번의 충돌이 더 있을 것으로 예상되므로 장애물의 크기나 스케일에 따라 문서 프리셋 아래의 동역학 프리셋을 살펴보는 것이 좋습니다.
공, 바퀴 및 장난감 자동차의 크기가 지정된 스케일링에 매우 가깝거나 충돌 허용 오차에 잘 맞으므로 이 예제에서는 조정할 필요가 없습니다.
장난감 자동차가 시작 직후 시야에서 사라지지 않도록 하기 위해 오브젝트 관리자의 씬 요소 아래에서 자동적으로 자동차에 정렬되는 타겟 카메라를 찾을 수 있습니다. 정렬 표현식은 자동차 오브젝트를 놓치지 않아야 한다고 명시합니다.
오브젝트 관리자에서 흰색 뷰파인더 기호를 클릭하여 활성화합니다.
이제 재생 버튼을 누르고 장애물이 가득한 지형을 주행하는 자동차를 볼 수 있습니다.
XPresso로 자동차에 대한 간단한 컨트롤 설치
물론 자동차가 지형을 똑바로 주행하는 것이 아니라 사용자로서 제어 옵션도 있다면 더 좋을 것입니다.
이 예시에서는 슬라이더를 통해 왼쪽이나 오른쪽으로 간단한 스티어링 옵션만 있으면 충분합니다. 실제로는 두 개의 물체(바퀴 또는 커넥터)를 제어해야 하지만 편리한 컨트롤러 하나만 있으면 되기 때문에 사용자 데이터의 형태로 자체 제어 매개변수를 통합하기만 하면 됩니다.
이를 위해 자동 그룹을 선택하고 속성 관리자의 사용자 메뉴를 통해 자체 사용자 데이터를 추가합니다.
사용자 데이터 관리 창이 열립니다. 이동 통신사 개체에 속한 모든 개별 사용자 데이터를 여기에서 찾을 수 있습니다. 새로 만든 항목의 이름을 Steering으로 변경하고 속성 필드를 사용하여 매개변수를 지정합니다.
인터페이스로는 도 단위의 부동 소수점 슬라이더를 선택합니다. 명확한 스텝을 처리하기 위해 스텝 폭을 1°로 선택합니다.
바퀴가 너무 많이 회전하여 차량과 겹치는 것을 방지하기 위해 최소 편향을 -30°로, 최대 편향을 30°로 제한합니다. 사전 설정 값인 0°는 시작 시 바퀴가 일직선이 되도록 합니다.
확인으로 대화를 닫고 사용자 데이터가 생성되면 자동차의 사용자 데이터 페이지에서 슬라이더로 원하는 대로 스티어링 파라미터를 설정할 수 있습니다.
이제 우리만의 파라미터를 제어할 수 있는 방법을 만들었습니다. 이제 차체의 올바른 위치로 전달하기만 하면 됩니다.
XPresso의 주요 작업입니다. 이렇게하려면 먼저 Cinema 4D 태그 하위 메뉴에서 마우스 오른쪽 버튼으로 컨텍스트 메뉴를 통해 가장 쉽게 할당 할 수있는 XPresso 태그가 필요합니다.
물론 자동 그룹은이 표현을위한 훌륭한 캐리어입니다.
XPresso 태그를 두 번 클릭하여 XPresso 편집기를 엽니다 . 첫 번째 항목 또는 노드로 개체 관리자에서 널 개체 자동을 XPresso 편집기 창으로 드래그합니다.
자체 생성한 매개변수를 연결용 포트로 사용하려면 출력 포트의 빨간색 버튼을 클릭하고 사용자 데이터 하위 메뉴에서 스티어링 포트를 선택합니다.
스티어링 파라미터를 사용하여 휠 서스펜션 커넥터의 스티어링 각도에 영향을 주고 싶습니다. XPresso 편집기에서 이러한 매개 변수에 액세스할 수 있도록 개체 관리자에서 왼쪽 및 오른쪽 앞바퀴의 두 커넥터를 찾아 두 개체를 모두 XPresso 편집기로 드래그합니다 .
두 커넥터로 값을 전송하려면 입력 포트에 제어 각도 매개 변수가 필요합니다. 이렇게하려면 커넥터 노드의 입력 포트에 대한 파란색 버튼을 클릭하고 개체 속성 하위 메뉴에서 제어 각도 포트를 선택합니다.
이제 두 개의 스티어링 각도 포트를 자동차의 스티어링 포트에 연결하기만 하면 됩니다. 이렇게하려면 마우스 버튼을 누른 상태에서 한 포트에서 다른 포트로 드래그하기 만하면됩니다.
안타깝게도 XPresso에 대한 우리의 작은 여행은 이미 완료되었으므로 XPresso 편집기를 닫을 수 있습니다. 자동차를 제어하기 위해 널 개체와 해당 사용자 데이터 입력을 지속적으로 검색 할 필요가 없도록 슬라이더 컨트롤을 편집기 창의 헤드 업 디스플레이 (HUD) 에 통합하기 만하면됩니다.
이렇게 하려면 속성 관리자에서 스티어링 파라미터 항목을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 HUD에 추가 명령을 선택합니다.
편집기에서 HUD 항목을 이동하려면 (Ctrl) 키를 누른 상태에서 HUD 요소를 클릭하고 마우스로 적절한 위치로 이동하면 됩니다.
차량이 선택되었을 때만 HUD 요소가 표시되도록 하려면 마우스 오른쪽 버튼을 누른 상태에서 해당 컨텍스트 메뉴를 불러온 다음 표시 메뉴에서 항상 옵션을 선택합니다.
이제 재생 버튼을 클릭하고 슬라이더를 사용하여 원하는 대로 지형을 통과하여 차량을 Schick할 수 있습니다. 자동차가 과속하는 것을 방지하기 위해 각 여정을 시작할 때마다 스티어링을 재설정해야 합니다.
나중에 모험적인 드라이브를 애니메이션으로 렌더링하려면 중요한 제어 지점에서 각 스티어링 값에 대한 키 프레임을 기록하기만 하면 됩니다. 지형지물을 통과하는 드라이빙을 즐겨보세요!