CCDIKSolver.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8" />
  5. <base href="../../" />
  6. <script src="list.js"></script>
  7. <script src="page.js"></script>
  8. <link type="text/css" rel="stylesheet" href="page.css" />
  9. </head>
  10. <body>
  11. <h1>[name]</h1>
  12. <p class="desc"> 用 <a href="https://sites.google.com/site/auraliusproject/ccd-algorithm"><em>CCD算法</em></a>求解IK. <br /><br />
  13. [name] 用CCD算法求解逆运动学问题.
  14. [name] 设计用于 用 [page:MMDLoader]加载的 [page:SkinnedMesh]但也可用于普通 [page:SkinnedMesh].
  15. </p>
  16. <h2>Example</h2>
  17. <code>
  18. var ikSolver;
  19. // Load MMD resources and instantiate CCDIKSolver
  20. new THREE.MMDLoader().load(
  21. 'models/mmd/miku.pmd',
  22. function ( mesh ) {
  23. ikSolver = new CCDIKSolver( mesh, mesh.geometry.iks );
  24. scene.add( mesh );
  25. }
  26. );
  27. function render() {
  28. animate(); // update bones
  29. if ( ikSolver !== undefined ) ikSolver.update();
  30. renderer.render( scene, camera );
  31. }
  32. </code>
  33. [example:webgl_loader_mmd]<br />
  34. [example:webgl_loader_mmd_pose]<br />
  35. [example:webgl_loader_mmd_audio]<br />
  36. <br />
  37. <hr>
  38. <h2>Constructor(构造器)</h2>
  39. <h3>[name]( [param:SkinnedMesh mesh], [param:Array iks] )</h3>
  40. <p>
  41. [page:SkinnedMesh mesh] — [page:SkinnedMesh] , [name] 解决了 IK 问题.<br />
  42. [page:Array iks] — 指定了 IK 参数的[page:Object]数组. target, effector, 和 link-index 是 .skeleton.bones中的索引整数.
  43. 骨骼关系应该是 "links[ n ], links[ n - 1 ], ..., links[ 0 ], effector" 以从父到子的顺序.<br />
  44. <ul>
  45. <li>[page:Integer target] — 目标骨骼.</li>
  46. <li>[page:Integer effector] — 效应器骨.</li>
  47. <li>[page:Array links] — 指定链接骨骼的[page:Object]数组.
  48. <ul>
  49. <li>[page:Integer index] — 链接骨骼.</li>
  50. <li>[page:Vector3 limitation] — (可选的) 旋转轴。 默认值undefined.</li>
  51. <li>[page:Vector3 rotationMin] — (可选的) 旋转最小限制. 默认值 undefined.</li>
  52. <li>[page:Vector3 rotationMax] — (可选的) 旋转最最大限制. 默认值 undefined.</li>
  53. <li>[page:Boolean enabled] — (可选的) 默认值 true.</li>
  54. </ul>
  55. </li>
  56. <li>[page:Integer iteration] — (可选的) 迭代次数计算。 更小的值更快但更不精确. 默认值 1.</li>
  57. <li>[page:Number minAngle] — (可选的) 步骤中的最小旋转角度. 默认值 undefined.</li>
  58. <li>[page:Number maxAngle] — (可选的) 步骤中的最大旋转角度. 默认值 undefined.</li>
  59. </ul>
  60. </p>
  61. <p>
  62. 创建一个新 [name].
  63. </p>
  64. <h2>Properties(属性)</h2>
  65. <h3>[property:Array iks]</h3>
  66. <p>传递给构造函数的IK参数数组.</p>
  67. <h3>[property:SkinnedMesh mesh]</h3>
  68. <p>[page:SkinnedMesh] 传递给构造函数.</p>
  69. <h2>Methods(方法)</h2>
  70. <h3>[method:CCDIKHelper createHelper]()</h3>
  71. <p>
  72. 返回 [page:CCDIKHelper]. 可以通过向场景添加帮助程序来可视化IK骨骼。
  73. </p>
  74. <h3>[method:CCDIKSolver update]()</h3>
  75. <p>
  76. 通过求解CCD算法更新骨骼四元数。
  77. </p>
  78. <h2>Source(来源)</h2>
  79. [link:https://github.com/mrdoob/three.js/blob/master/examples/js/animation/CCDIKSolver.js examples/js/animation/CCDIKSolver.js]
  80. </body>
  81. </html>