Loading-3D-models.html 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <!DOCTYPE html>
  2. <html lang="ko">
  3. <head>
  4. <meta charset="utf-8">
  5. <base href="../../../" />
  6. <script src="page.js"></script>
  7. <link type="text/css" rel="stylesheet" href="page.css" />
  8. </head>
  9. <body>
  10. <h1>3D 모델 불러오기([name])</h1>
  11. <p>
  12. 3D 모델들은 각자 다양한 목적, 적합한 특성, 다양한 복잡성을 가지고 있는 수백개의 파일 포맷으로 존재할 수 있습니다.
  13. <a href="https://github.com/mrdoob/three.js/tree/dev/examples/jsm/loaders" target="_blank" rel="noopener">
  14. three.js는 다양한 로더를 지원하지만</a>, 알맞는 포맷과 워크플로우를 선택하는 것이 시간을 아끼고 이후에 생길 문제를 방지할 수 있는 방법입니다.
  15. 몇몇 포맷들은 작업하기 어렵거나, 실시간으로 반영하기 어렵거나, 단순히 지금 시점에 전부 지원을 안하기도 합니다.
  16. </p>
  17. <p>
  18. 여기에서는 대부분의 사용자들에게 추천할만 한 워크플로우와, 막혔을때의 해결법을 알려드리고자 합니다.
  19. </p>
  20. <h2>시작하기에 앞서</h2>
  21. <p>
  22. 로컬 서버를 돌리는 것이 처음이라면,
  23. [link:#manual/introduction/How-to-run-things-locally how to run things locally]
  24. 를 먼저 확인하세요. 3D 모델의 대부분의 에러는 파일을 알맞게 호이스팅하는 것으로 해결할 수 있습니다.
  25. </p>
  26. <h2>추천 워크플로우</h2>
  27. <p>
  28. 가능하다면, glTF(GL Transmission Format)를 사용하는 것을 추천드립니다.
  29. <small>.GLB</small> 와 <small>.GLTF</small> 버전 포맷 모두 잘 지원될 것입니다.
  30. glTF는 런타임 자원 효율에 초점을 맞추고 있기 때문에 로딩을 빠르고 정확하게 할 수 있습니다.
  31. 속성으로는 meshes, materials, textures, skins, skeletons, morph targets, animations, lights, 그리고
  32. cameras 가 있습니다.
  33. </p>
  34. <p>
  35. 퍼블릭 도메인 glTF 파일은
  36. <a href="https://sketchfab.com/models?features=downloadable&sort_by=-likeCount&type=models" target="_blank" rel="noopener">
  37. Sketchfab</a> 사이트처럼 사용할 수 있고, 다양한 툴들에서 glTF로 출력해 사용할 수 있습니다.
  38. </p>
  39. <ul>
  40. <li><a href="https://www.blender.org/" target="_blank" rel="noopener">Blender</a> by the Blender Foundation</li>
  41. <li><a href="https://www.allegorithmic.com/products/substance-painter" target="_blank" rel="noopener">Substance Painter</a> by Allegorithmic</li>
  42. <li><a href="https://www.foundry.com/products/modo" target="_blank" rel="noopener">Modo</a> by Foundry</li>
  43. <li><a href="https://www.marmoset.co/toolbag/" target="_blank" rel="noopener">Toolbag</a> by Marmoset</li>
  44. <li><a href="https://www.sidefx.com/products/houdini/" target="_blank" rel="noopener">Houdini</a> by SideFX</li>
  45. <li><a href="https://labs.maxon.net/?p=3360" target="_blank" rel="noopener">Cinema 4D</a> by MAXON</li>
  46. <li><a href="https://github.com/KhronosGroup/COLLADA2GLTF" target="_blank" rel="noopener">COLLADA2GLTF</a> by the Khronos Group</li>
  47. <li><a href="https://github.com/facebookincubator/FBX2glTF" target="_blank" rel="noopener">FBX2GLTF</a> by Facebook</li>
  48. <li><a href="https://github.com/AnalyticalGraphicsInc/obj2gltf" target="_blank" rel="noopener">OBJ2GLTF</a> by Analytical Graphics Inc</li>
  49. <li>&hellip;and <a href="http://github.khronos.org/glTF-Project-Explorer/" target="_blank" rel="noopener">many more</a></li>
  50. </ul>
  51. <p>
  52. 선호하는 툴이 glTF를 지원하지 않는다면, glTF로 출력하는 것을 개발자에게 문의해보거나,
  53. <a href="https://github.com/KhronosGroup/glTF/issues/1051" target="_blank" rel="noopener">the glTF roadmap thread</a>에 포스팅 해 보세요.
  54. </p>
  55. <p>
  56. glTF 이외에도, FBX, OBJ, COLLADA 같은 유명한 포맷들도 잘 지원됩니다.
  57. </p>
  58. <h2>로딩</h2>
  59. <p>
  60. three.js에는 몇몇 로더들을 제외하고는(ex: [page:ObjectLoader]) 기본적으로 include되어 있지 않습니다. 다른 로더들은 개별적으로 앱에 추가해줘야 합니다.
  61. </p>
  62. <code>
  63. import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
  64. </code>
  65. <p>
  66. 로더를 import한 후에, scene에 모델을 로드하면 됩니다. 구문은 로더에 따라 다릅니다. — 다른 포맷을 사용할 경우에는, 해당 로더에 대한 예제와 문서를 참고하세요.
  67. glTF의 경우 글로벌 스크립트는 다음과 같이 사용합니다.
  68. </p>
  69. <code>
  70. const loader = new GLTFLoader();
  71. loader.load( 'path/to/model.glb', function ( gltf ) {
  72. scene.add( gltf.scene );
  73. }, undefined, function ( error ) {
  74. console.error( error );
  75. } );
  76. </code>
  77. <p>
  78. [page:GLTFLoader GLTFLoader 문서]를 참고하세요.
  79. </p>
  80. <h2>문제 해결</h2>
  81. <p>
  82. 많은 시간을 공 들여 걸작을 모델링하고 나서, 웹 페이지에
  83. 업로드 했더닝, 이런! 😭 왜곡돼있거나 색이 안 칠해져있거나 아예 나오지 않을 때가 있습니다.
  84. 다음 순서대로 문제 해결을 해 봅시다:
  85. </p>
  86. <ol>
  87. <li>
  88. 자바스크립트 콘솔 에러를 체크합니다.
  89. <em>.load()</em>를 사용할 때 로그 결과에 <em>onError</em> 콜백을 사용했는지를 확인합니다.
  90. </li>
  91. <li>
  92. 다른 애플리케이션에서 모델을 확인합니다. glTF에서는, 드래그-앤-드롭 뷰어가
  93. <a href="https://gltf-viewer.donmccurdy.com/" target="_blank" rel="noopener">three.js</a>와
  94. <a href="http://sandbox.babylonjs.com/" target="_blank" rel="noopener">babylon.js</a>에서 사용 가능합니다. 만약 모델이
  95. 하나 이상의 어플리케이션에서 정상적으로 나타난다면,
  96. <a href="https://github.com/mrdoob/three.js/issues/new" target="_blank" rel="noopener">three.js와 관련된 버그를 알려주세요</a>.
  97. 어느 애플리케이션에서도 모델이 나타나지 않는다면, 모델을 만든 어플리케이션의 버그를 확인해 보는 것을 강력하게 추천드립니다.
  98. </li>
  99. <li>
  100. 모델을 1000배 확대 혹은 축소해 보세요. 여러 모델들은 다양하게 확대 및 축소되어 보여질 수 있으며
  101. 너무 큰 모델은 카메라가 모델 안에 있어 제대로 안 보일 수 있습니다.
  102. </li>
  103. <li>
  104. 밝은 모델을 사용하거나 위치를 바꿔보세요. 모델이 가려져 있을 수 있습니다.
  105. </li>
  106. <li>
  107. 네트워크 탭에서 failed texture requests를 확인합니다. 예를 들면,
  108. <em>C:\\Path\To\Model\texture.jpg</em>. 이러한 주소 대신 상대 주소를 사용해, <em>images/texture.jpg</em>처럼 사용해 보세요
  109. — 이 작업은 텍스트 에디터에서 모델 파일을 수정해야 할 수도 있습니다.
  110. </li>
  111. </ol>
  112. <h2>지원 요청</h2>
  113. <p>
  114. 위의 문제 해결 절차를 거치고도 모델이 제대로 나오지 않는다면, 적절한 질문을 통해 도움을 구하는 것이 가장 빠른 해결책일 것입니다.
  115. <a href="https://discourse.threejs.org/" target="_blank" rel="noopener">three.js 포럼</a>에 문제제기를 하고 가능하다면,
  116. 아무 포맷으로 자신의 모델을 첨부(혹은 같은 문제가 있는 더 단순한 모델)을 첨부해 주세요.
  117. 다른 사람에게 충분한 정보를 제공해 주는 것이 문제를 해결할 수 있는 빠를 방법입니다. — live demo를 사용하면 이상적입니다.
  118. </p>
  119. </body>
  120. </html>