로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!{{소프트웨어 정보 |이름 = Houdini |원어이름 = |배경색 = |글자색 = |로고 = [[파일:houdini logo.svg|Houdini Logo|400px]] |화면 = |화면설명 = |원작자 = |개발 = |종류 = [[컴퓨터 그래픽스]] |출시 = [[1996년]] [[10월 2일]] |최신버전 = 18.5.351 |최신출시 = [[2020년]] [[10월 20일]] |미리보기 = 18.5.372 |미리출시 = [[2020년]] [[10월 20일]] |상태 = |언어 = 영어, 일본어 |운영체제 = Windows, macOS, Linux |플랫폼 = |엔진 = |작성언어 = [[C++]], [[Python]] |라이선스 = 무료, 상용 |이전 = |이후 = |웹사이트 = {{URL|www.sidefx.com/products/houdini}} |비고 = }} == 개요 == SideFX 사에서 개발한 [[3D]] 모델링을 포함한 VFX 제작 및 렌더링{{*|내장된 Mantra와 Karma}} 프로그램이다. 다른 여타 3D 그래픽스 소프트웨어들과는 다르게 워크플로우 자체가 [[노드]]를 기반으로 한 절차적 생성 방식으로 되어있다. 또 그러한 경향에 따라 [[프로그래밍]]과 매우 밀접한 관련이 있고 이는 일반적으로 알려진 Houdini의 난이도 상승 문제에 직결된 면이 있다. === 버전 === 일반적으로 5가지 종류가 있다고 볼 수 있는데 각각 Apprentice, Indie, Artist, Studios, Education 버전이다. {| class="wikitable" ! 이름 || 가격 || 제한 및 특이사항 |- | Apprentice || '''무료''' || 렌더링 등에 해상도 제한과 워터마크가 붙으며 타사의 서드파티 렌더러를 사용 할 수 없고, 특정 확장자의 경우 파일 출력 등의 경우는 불러오기만 가능하다. 당연히 상업적 사용도 불가능. |- | Indie{{*|스팀에서 구입 가능한 유일한 버전이다}} || $299(연간), $399(2년간) || 연간 총 소득액 10만 달러 미만의 스튜디오 중 사용자 3명 이하. 또한 영구적인 라이센스는 구매할 수 없다. 다른 상용 라이센스와 다르게 [[Houdini#Houdini Engine|Houdini Engine]]을 시트 수만큼 무료로 제공한다. |- | Artist || $1,995(Core), $4,495(FX), $499(Engine) || 스튜디오 중 사용자 5명 이하. |- | Studios || $2,995(Core), $6,995(FX) || |} === Houdini Engine === 다른 소프트웨어에 통합되어 사용할 수 있는 Houdini다. Houdini에서 에셋을 만들고 디지털 에셋으로 출력해 DCC 어플리케이션 등에서 Houdini Engine 플러그인을 적용 후 불러와 Houdini 내부에서 디지털 에셋을 사용하듯 인자 값을 조정해 에셋 자체를 수정하지 않고 인스턴스 마다 편집이 가능하게 된다. 지원하는 프로그램들은 다음과 같다. * [[3DS MAX]] * [[Autodesk Maya]] * [[언리얼 엔진|Unreal Engine 4]] * [[유니티 (게임 엔진)|Unity]] Indie 라이센스를 제외한 다른 상용 라이센스에서는 추가적으로 구입해야 한다. 모든 라이센스가 영구적인 라이센스가 아닌 구독제 라이센스다. == [[Houdini/노드|노드]] == 주로 노드를 연결해 모델링과 VFX 제작을 하는 프로그램인 만큼 수많은 노드들이 존재한다. 자세한 내용은 [[Houdini/노드|노드]]로. == VEX == Houdini 내부에서 사용하는 프로그래밍 언어. 단 스크립팅 언어를 대체하는 언어는 아니다{{*|스크립팅 언어는 [[Python]]과 HScript라는 게 쓰이는데, 후자는 쉘 스크립트와 비슷한 문법을 가지고 있다. 이 HScript는 Houdini에서 VEX와 함께 같이 밀접하게 사용된다.}}. [[C (프로그래밍 언어)|C]]를 기반으로 하고 [[C++]]와 몇 가지 다른 언어에서 편리한 문법들을 차용했다. 실제로 vcc라는 vex [[컴파일러]]가 C로 컴파일해 실행 된다. === 문법 === 아래는 C와 다른 부분을 위주로 서술되어 있다. ==== 변수 ==== ===== 배열 ===== 기존 C 계열 언어와 동일한 방식으로 배열을 만들 수 있다. 리터럴도 중괄호로 감싸아서 표현한다. 단 리터럴의 경우 컴파일 타임에 변수 값을 읽을 수 없어 array 함수로 대신해주어야 한다. 또한 [[파이썬]]의 리스트처럼 쉽게 범위를 지정해 내부 값을 복사할 수도 있다. <syntaxhighlight lang="cpp"> float arr[]; string arr2[] = { "Hello", "World" }; int value = 1; int arr3[] = array(value, 2, 3); // 리터럴의 경우 컴파일 에러! int nums[] = { 0, 1, 2, 3, 4, 5 }; int start[] = nums[0:2]; // { 0, 1 } int end[] = nums[-2:]; // { 4, 5 } int rev[] = nums[::-1]; // { 5, 4, 3, 2, 1, 0 } int odd[] = nums[1::2]; // { 1, 3, 5 } </syntaxhighlight> ===== 문자열 ===== 따옴표로 문자열 값을 리터럴로 표현할 수 있다. 큰따옴표든 작은따옴표든 상관 없다. <syntaxhighlight lang="cpp"> string s = 'foo'; string t = "bar"; string py = r"Hello world\n"; // Python 스타일, "Hello world\\n"와 동일함. string cpp = R"(Hello world\n)"; // C++ 스타일. "Hello world\\n"와 동일함. </syntaxhighlight> ===== 속성 ===== 어트리뷰트라고도 한다. Houdini에서 가장 중요하다고도 말할 수 있을 정도로 많은 데이터가 속성 값에 들어있는데 예를 들어 디퓨즈 컬러, 위치, 노멀, 알파 값 등등은 전부 속성에서 접근할 수 있다. 조작하기 위해 대체할 수 있는 노드들도 있지만 vex를 이용해 접근하는 것이 훨씬 확장성이 높다. 속성 값은 '''[[골뱅이표|@]]'''를 접두사로 써서 표현하는데 영어로 at이라 부르기 때문이다. 또한 타입에 따라 i(정수), f(실수), v(벡터), s(문자열)들을 @ 앞에 기입해 타입을 명확히 지시해서 사용한다. 이미 정의했거나 미리 지정되어 있는 속성 값에서는 이를 생략할 수 있다. <syntaxhighlight lang="cpp"> i@integer_value = 1; // 정수형 속성 값, integer_value가 이름이 되었다. f@float_value = 1.f; // 실수형 속성 값 v@vector_value = {0, 0, 0}; // 벡터형 속성 값 s@string_value = "hello houdini!"; // 문자열형 속성 값 </syntaxhighlight> 위 vex 코드를 단일 [[Houdini#Primitives|Box]] 형태에서 Attribute Wrangle 노드를 이용해 입력했을 때 지오메트리 스프레드시트 탭에서 다음과 같이 변경된다. [[파일:houdini example vex.jpg|800px]] 대표적으로 다음과 같은 미리 정의된 속성 값들이 있다. * '''v@P''' 포인트의 위치 값이다. 이 값을 변경하면 포인트의 위치가 변경 된다. * '''v@N''' 노멀의 방향 값이다. 변경하면 노멀을 변경할 수 있다. * '''v@v''' 속도 값이다. 렌더러가 모션 블러를 추가할 때 사용한다. 자동으로 계산되지 않는 속성 값이다. * '''i@id''' 각 요소마다 고유한 id 값이다. 요소 순서 값과는 다르다. 지오메트리가 변경되어 포인트에 할당되었던 번호가 변경되었어도 여전히 같은 값으로 추적할 수 있다. 파티클 DOP에서 종종 사용 된다. * '''s@name''' 볼륨 혹은 패킹된 프리미티브와 같은 것들에 설정하여 이름별로 코드에서 탐색 가능한 값이다. 일부 노드가 사용하는 속성 값이다. * '''v@Cd''' 벡터로 나타낸 rgb의 디퓨즈 컬러 값이다. 변경하면 뷰포트에서 확인 가능하다. * '''f@Alpha''' 알파 투명도 값이다. 변경하면 뷰포트에서 확인 가능하다. ==== 함수 ==== 아래와 같이 연속되는 같은 인자 값들의 타입을 생략 할 수 있다. 세미콜론으로 다른 타입의 인자와 구분 한다. <syntaxhighlight lang="cpp"> int test(int a, b; string c) { if (a > b) { printf(c); } } </syntaxhighlight> 사용시 주의해야 할 점은 앞서 서술했듯이 C로 컴파일 된 후 실행되므로 함수가 재귀적으로 실행되지 않는다는 점이 있다{{*|정확히는 재귀적으로 호출해야 할 함수가 아직 초기화 되지 않은 상태이기 때문에 [[컴파일러]]가 함수를 찾을 수 없어 에러를 띄운다.}}. 이땐 셰이더 호출을 사용해야 한다. === 범위 기반 for === <syntaxhighlight lang="cpp"> int arr = { 0, 1, 2, 3 }; foreach (int i; arr) { printf("%d\n", i); } </syntaxhighlight> {{각주}} [[분류:Houdini| ]] [[분류:1990년 소프트웨어]] 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:* (편집) 틀:Ref (원본 보기) (준보호됨)틀:URL (편집) 틀:각주 (원본 보기) (준보호됨)틀:소프트웨어 정보 (원본 보기) (준보호됨)틀:외부링크 (원본 보기) (준보호됨)틀:정보상자 주제칸 (원본 보기) (준보호됨)틀:정보상자 칸 (원본 보기) (준보호됨)틀:정보상자 큰칸 (원본 보기) (준보호됨)