경고 : 최신판이 아닙니다. 이 문서의 오래된 판을 편집하고 있습니다. 이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다. 로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!{{소프트웨어 정보 | 이름 = Houdini | 로고 = [[File:houdini_logo.svg|Houdini Logo|400px]] | 개발사 = SideFX | 발표일 = {{출시일|1996|10|02}} | 최신 버전 = 18.5.351 | 최신 버전 출시일 = {{출시일|2020|10|20}} | 미리보기 버전 = 18.5.372 | 미리보기 버전 출시일 = {{출시일|2020|10|20}} | 프로그래밍 언어 = C++, Python | 운영체제 = Windows, macOS, Linux | 언어 = 영어, 일본어 | 종류 = [[컴퓨터 그래픽스]] | 라이선스 = 무료, 상용 | 웹사이트 = {{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명 이하. 또한 영구적인 라이센스는 구매할 수 없다. |- | Artist || $1,995(Core), $4,495(FX), $499(Engine) || 스튜디오 중 사용자 5명 이하. |- | Studios || $2,995(Core), $6,995(FX) || |} == 노드 == /obj의 Tab 메뉴를 기준으로 작성되었다. === Primitives === {{ Houdini 노드 | [[File:box.svg|Box|48px]] | Box, Cube | 정육면체 형태를 만든다. 프리미티브, 폴리곤, 폴리곤 메쉬, NURBS, 베지어, 포인트 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_circle.svg|Circle|48px]] | Circle | 원 형태를 만든다. 프리미티브, 폴리곤, NURBS 곡선, 베지어 곡선 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_generic.svg|Generic|48px]] | Control | }} {{ Houdini 노드 | [[File:houdini_curve.svg|Curve|48px]] | Curve | 직접 포인트를 하나의 노드로 찍을 수 있다. 폴리곤, NURBS, 베지어, 포인트 타입을 지원하고 포인트 타입이 아니라면 이웃 포인트 끼리 에지로 연결된다. }} {{ Houdini 노드 | [[File:houdini_drawcurve.svg|Draw Curve|48px]] | Draw Curve | }} {{ Houdini 노드 | [[File:houdini_file.svg|File|48px]] | File | obj나 fbx 파일 등등을 불러올 수 있다. }} {{ Houdini 노드 | [[File:houdini_font.svg|Font|48px]] | Font | 폰트를 지정해 글자를 만들 수 있다. 베지어 곡선과 폴리곤 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_grid.svg|Grid|48px]] | Grid | 사각형 형태를 행렬 방식으로 만들 수 있다. 행, 열, 행렬, 삼각형, 사변형, 대체 삼각형, 역삼각형 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_iso.svg|Iso|48px]] | IsoSurface | 등가곡면을 만든다. }} {{ Houdini 노드 | [[File:houdini_lsystem.svg|L-System|48px]] | L-System | 이름 그대로 [[L-System]] 알고리즘 기반 생성한다. 처음 만들면 아이콘처럼 나무 줄기 모양을 만들 수 있다. 뼈대, 튜브 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_line.svg|Line|48px]] | Line | 직선을 만든다. 폴리곤, NURBS, 베지어, 포인트 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_metaball.svg|Metaball|48px]] | Metaball | }} {{ Houdini 노드 | [[File:houdini_platonic.svg|Platonic Solids|48px]] | Platonic Solids | }} {{ Houdini 노드 | [[File:houdini_font.svg|PolySoup|48px]] | PolySoup | }} {{ Houdini 노드 | [[File:houdini_primitive.svg|Primitives|48px]] | Primitives | }} {{ Houdini 노드 | [[File:houdini_sphere.svg|Sphere|48px]] | Sphere | 구체를 만든다. 프리미티브, 폴리곤, 폴리곤 메쉬, 메쉬, NURBS, 베지어, 폴리곤 스프 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_torus.svg|Torus|48px]] | Torus | 원환면 형태를 만든다. 폴리곤, 메쉬, NUBRS, 베지어, 폴리곤 스프 타입을 지원한다. }} {{ Houdini 노드 | [[File:houdini_trace.svg|Trace|48px]] | Trace | 이미지 파일을 불러와 평면의 지오메트리로 만들 수 있다. 지오메트리의 외곽선은 알파값으로 구분 된다. }} {{ Houdini 노드 | [[File:houdini_tribez.svg|TriBezier|48px]] | TriBezier | }} {{ Houdini 노드 | [[File:houdini_tube.svg|Tube|48px]] | Tube | 튜브, 혹은 고깔 형태를 만든다. 프리미티브, 폴리곤, 메쉬, NURBS, 베지어, 폴리곤 스프 형태를 지원한다. 양면을 닫거나 열 수 있다. }} === Utility === * Convert - 입력 받은 형태를 특정 형태로 변환 시켜준다. * Copy and Transform - 복사한 다음 해당 위치만큼 이동시켜준다. 구버전에서는 Duplicate 노드였다. * Convert Line - 입력 받은 형태를 에지만 남도록 해준다. * Copy to Points - 첫 번째로 입력 받은 지오메트리 노드를 두 번째로 입력해 지정한 포인트 마다 복사한다. 지정하지 않는다면 모든 포인트를 기준으로 복사한다. * Merge - 입력 받은 지오메트리를 합쳐준다. 오브젝트 네트워크 패널에서 합칠 노드를 모두 선택하고 Alt+드래그를 하면 자동으로 생성 된다. * Mirror - 거울에 비추듯 반사하여 반대쪽으로 상이 맺히듯 복사한다. * Null - 이 노드 자체는 아무것도 하지 않는다. 주로 여기에 인자 값을 만들고 조작하거나 다른 노드 네트워크에서 참조해 확장하는 용도로 사용한다. * PolyDoctor - 겹쳐있는 폴리곤 등, 지오메트리의 몇 가지 문제점을 자동으로 고쳐준다. * Split - 지오메트리의 일부분을 선택해 나눌 수 있다. 선택한 지오메트리는 첫 번째 출력으로, 선택하지 않는 지오메트리는 두 번째 출력으로 나온다. * Subnetwork - 또 다른 네트워크를 만든다. 총 4개의 입력을 받을 수 있다. * Visualize - 표면이나 포인트에 색상을 입혀보거나 와이어프레임을 강제로 활성화 하는 등 말 그대로 시각화 해준다. == VEX == Houdini 내부에서 사용하는 프로그래밍 언어. 단 스크립팅 언어를 대체하는 언어는 아니다. [[C (프로그래밍 언어)|C]]를 기반으로 하고 [[C++]]와 몇 가지 다른 언어에서 편리한 문법들을 차용했다. 실제로 vcc라는 vex 컴파일러가 C로 컴파일해 실행 된다. === 문법 === 아래는 C와 다른 부분을 위주로 서술되어 있다. ==== 변수 ==== ===== 배열 ===== 기존 C 계열 언어와 동일한 방식으로 배열을 만들 수 있다. 리터럴도 중괄호로 감싸아서 표현한다. 단 리터럴의 경우 컴파일 타임에 변수 값을 읽을 수 없어 array 함수로 대신해주어야 한다. 또한 파이썬의 리스트처럼 쉽게 범위를 지정해 내부 값을 복사할 수도 있다. <source 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 } </source> ===== 문자열 ===== 따옴표로 문자열 값을 리터럴로 표현할 수 있다. 큰따옴표든 작은따옴표든 상관 없다. <source 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"와 동일함. </source> ==== 함수 ==== 아래와 같이 연속되는 같은 인자 값들의 타입을 생략 할 수 있다. 세미콜론으로 다른 타입의 인자와 구분 한다. <source lang="cpp"> int test(int a, b; string c) { if (a > b) { printf(c); } } </source> 사용시 주의해야 할 점은 앞서 서술했듯이 C로 컴파일 된 후 실행되므로 함수가 재귀적으로 실행되지 않는다는 점이 있다{{*|정확히는 재귀적으로 호출해야 할 함수가 아직 초기화 되지 않은 상태이기 때문에 컴파일러가 함수를 찾을 수 없어 에러를 띄운다.}}. 이땐 셰이더 호출을 사용해야 한다. === 범위 기반 for === <source lang="cpp"> int arr = { 0, 1, 2, 3 }; foreach (int i; arr) { printf("%d\n", i); } </source> {{각주}} [[분류:그래픽 소프트웨어]] [[분류: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 (편집) 틀:각주 (원본 보기) (준보호됨)틀:소프트웨어 정보 (원본 보기) (준보호됨)틀:외부링크 (원본 보기) (준보호됨)틀:정보상자 주제칸 (원본 보기) (준보호됨)틀:정보상자 칸 (원본 보기) (준보호됨)틀:정보상자 큰칸 (원본 보기) (준보호됨)