401 lines
80 KiB
HTML
Vendored
401 lines
80 KiB
HTML
Vendored
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
|
||
<meta name="generator" content="Doxygen 1.9.5"/>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||
<title>dl: dl/render/dl_model_bone.h 源文件</title>
|
||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||
<script type="text/javascript" src="jquery.js"></script>
|
||
<script type="text/javascript" src="dynsections.js"></script>
|
||
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||
<div id="titlearea">
|
||
<table cellspacing="0" cellpadding="0">
|
||
<tbody>
|
||
<tr id="projectrow">
|
||
<td id="projectalign">
|
||
<div id="projectname">dl
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<!-- end header part -->
|
||
<!-- 制作者 Doxygen 1.9.5 -->
|
||
<div id="navrow1" class="tabs">
|
||
<ul class="tablist">
|
||
<li><a href="index.html"><span>首页</span></a></li>
|
||
<li><a href="pages.html"><span>相关页面</span></a></li>
|
||
<li><a href="namespaces.html"><span>命名空间</span></a></li>
|
||
<li><a href="annotated.html"><span>类</span></a></li>
|
||
<li class="current"><a href="files.html"><span>文件</span></a></li>
|
||
</ul>
|
||
</div>
|
||
<div id="navrow2" class="tabs2">
|
||
<ul class="tablist">
|
||
<li><a href="files.html"><span>文件列表</span></a></li>
|
||
<li><a href="globals.html"><span>文件成员</span></a></li>
|
||
</ul>
|
||
</div>
|
||
<div id="nav-path" class="navpath">
|
||
<ul>
|
||
<li class="navelem"><a class="el" href="dir_17297ffb27ce571941f5fb5008f01a1f.html">dl</a></li><li class="navelem"><a class="el" href="dir_fb7736e1c74498e30aec54e277779486.html">render</a></li> </ul>
|
||
</div>
|
||
</div><!-- top -->
|
||
<div class="header">
|
||
<div class="headertitle"><div class="title">dl_model_bone.h</div></div>
|
||
</div><!--header-->
|
||
<div class="contents">
|
||
<a href="dl__model__bone_8h.html">浏览该文件的文档.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span> </div>
|
||
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#pragma once</span></div>
|
||
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> </div>
|
||
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include <vector></span></div>
|
||
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
|
||
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#include "<a class="code" href="dl__stream__output_8h.html">memory/dl_stream_output.h</a>"</span></div>
|
||
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="preprocessor">#include "<a class="code" href="dl__stream__input_8h.html">memory/dl_stream_input.h</a>"</span></div>
|
||
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="preprocessor">#include "<a class="code" href="dl__matrix_8h.html">math/dl_matrix.h</a>"</span></div>
|
||
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
|
||
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespacedl.html">dl</a></div>
|
||
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span>{</div>
|
||
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
|
||
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame.html"> 24</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structdl_1_1_bone_key_frame.html">BoneKeyFrame</a></div>
|
||
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>{</div>
|
||
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame.html#aa8fcaabd43e83a4786313744789781a3"> 26</a></span> <a class="code hl_function" href="structdl_1_1_bone_key_frame.html#aa8fcaabd43e83a4786313744789781a3">BoneKeyFrame</a>() :</div>
|
||
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a>(-1.0f),<span class="comment">//负数代表无效</span></div>
|
||
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">_translation</a>{},</div>
|
||
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">_roationQuat</a>{ 1.0f, 0.0f, 0.0f, 0.0f },</div>
|
||
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">_scaling</a>{ 1.0f, 1.0f, 1.0f }</div>
|
||
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> {}</div>
|
||
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> </div>
|
||
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d"> 33</a></span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a>;</div>
|
||
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539"> 34</a></span> <a class="code hl_typedef" href="namespacedl.html#a7d07deda01ae45d04f3323a4e6445e51">Position3</a> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">_translation</a>;</div>
|
||
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37"> 35</a></span> <a class="code hl_typedef" href="namespacedl.html#aa36525eecbb6603a7ae4a63340c205f9">Position4</a> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">_roationQuat</a>;</div>
|
||
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e"> 36</a></span> <a class="code hl_typedef" href="namespacedl.html#a7d07deda01ae45d04f3323a4e6445e51">Position3</a> <a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">_scaling</a>;</div>
|
||
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span>};</div>
|
||
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
|
||
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
|
||
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame_multi.html"> 41</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structdl_1_1_bone_key_frame_multi.html">BoneKeyFrameMulti</a></div>
|
||
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span>{</div>
|
||
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> <span class="comment">//关键帧插值</span></div>
|
||
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame_multi.html#a801246ec1817cdac700af5c2f2d7439b"> 44</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structdl_1_1_bone_key_frame_multi.html#a801246ec1817cdac700af5c2f2d7439b">Interpolate</a>(<a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> t, <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a>& mat)</div>
|
||
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> {</div>
|
||
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="comment">//没有关键帧直接返回(保持不变)</span></div>
|
||
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.empty())</div>
|
||
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> <span class="comment">//变换顺序为SRT</span></div>
|
||
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> mat.<a class="code hl_function" href="classdl_1_1_matrix.html#af7f569fd33da93293d982663e0b319b4">Identity</a>();</div>
|
||
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
|
||
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordflow">if</span> (t <= <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.front()._t)</div>
|
||
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> {</div>
|
||
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame.html">BoneKeyFrame</a>& key_frame = <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.front();</div>
|
||
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_t = <a class="code hl_function" href="namespacedl_1_1_mat.html#a518b7d5cabf8a0cd7a04c2ed49c706cf">Mat::CreateTranslation</a>(key_frame.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">_translation</a>);</div>
|
||
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_r = <a class="code hl_function" href="namespacedl_1_1_mat.html#a11f384dbeee6ee2c282d8eaab3e74873">Mat::CreateRotation</a>(key_frame.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">_roationQuat</a>);</div>
|
||
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_s = <a class="code hl_function" href="namespacedl_1_1_mat.html#aaf966c66eaa955411ca63f74be079c87">Mat::CreateScaling</a>(key_frame.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">_scaling</a>);</div>
|
||
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> mat = mat_t * mat_r * mat_s;</div>
|
||
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> }</div>
|
||
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (t >= <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.back()._t)</div>
|
||
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> {</div>
|
||
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame.html">BoneKeyFrame</a>& key_frame = <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.back();</div>
|
||
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_t = <a class="code hl_function" href="namespacedl_1_1_mat.html#a518b7d5cabf8a0cd7a04c2ed49c706cf">Mat::CreateTranslation</a>(key_frame.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">_translation</a>);</div>
|
||
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_r = <a class="code hl_function" href="namespacedl_1_1_mat.html#a11f384dbeee6ee2c282d8eaab3e74873">Mat::CreateRotation</a>(key_frame.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">_roationQuat</a>);</div>
|
||
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_s = <a class="code hl_function" href="namespacedl_1_1_mat.html#aaf966c66eaa955411ca63f74be079c87">Mat::CreateScaling</a>(key_frame.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">_scaling</a>);</div>
|
||
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> mat = mat_t * mat_r * mat_s;</div>
|
||
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> }</div>
|
||
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> {</div>
|
||
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.size() - 1; ++i)</div>
|
||
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> {<span class="comment">//[0, n-1)</span></div>
|
||
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame.html">BoneKeyFrame</a>& kf_0 = <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>[i];</div>
|
||
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame.html">BoneKeyFrame</a>& kf_1 = <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>[i + 1];</div>
|
||
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="comment">//找到时间范围内</span></div>
|
||
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keywordflow">if</span> (t >= kf_0.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a> && t <= kf_1.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a>)</div>
|
||
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> {</div>
|
||
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> percent = (t - kf_0.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a>) / (kf_1.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a> - kf_0.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">_t</a>);</div>
|
||
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
|
||
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> <a class="code hl_typedef" href="namespacedl.html#a7d07deda01ae45d04f3323a4e6445e51">Position3</a> t = <a class="code hl_function" href="namespacedl_1_1_each.html#a70ebcccd1d7b1c9f14c2b4628a7c388c">Each::Lerp</a>(kf_0.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">_translation</a>, kf_1.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">_translation</a>, percent);</div>
|
||
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <a class="code hl_typedef" href="namespacedl.html#aa36525eecbb6603a7ae4a63340c205f9">Position4</a> r = <a class="code hl_function" href="namespacedl_1_1_math.html#a6b4a57c034f58c7ba26105da97b21d22">Math::Slerp</a>(kf_0.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">_roationQuat</a>, kf_1.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">_roationQuat</a>, percent);</div>
|
||
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> <a class="code hl_typedef" href="namespacedl.html#a7d07deda01ae45d04f3323a4e6445e51">Position3</a> s = <a class="code hl_function" href="namespacedl_1_1_each.html#a70ebcccd1d7b1c9f14c2b4628a7c388c">Each::Lerp</a>(kf_0.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">_scaling</a>, kf_1.<a class="code hl_variable" href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">_scaling</a>, percent);</div>
|
||
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> </div>
|
||
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_t = <a class="code hl_function" href="namespacedl_1_1_mat.html#a518b7d5cabf8a0cd7a04c2ed49c706cf">Mat::CreateTranslation</a>(t);</div>
|
||
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_r = <a class="code hl_function" href="namespacedl_1_1_mat.html#a11f384dbeee6ee2c282d8eaab3e74873">Mat::CreateRotation</a>(r);</div>
|
||
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a> mat_s = <a class="code hl_function" href="namespacedl_1_1_mat.html#aaf966c66eaa955411ca63f74be079c87">Mat::CreateScaling</a>(s);</div>
|
||
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> mat = mat_t * mat_r * mat_s;</div>
|
||
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <span class="keywordflow">break</span>;</div>
|
||
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> }</div>
|
||
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> }</div>
|
||
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> }</div>
|
||
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> }</div>
|
||
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
|
||
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01"> 93</a></span> std::vector<BoneKeyFrame> <a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>;</div>
|
||
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span>};</div>
|
||
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="structdl_1_1_animation_clip.html"> 96</a></span><span class="keyword">struct </span><a class="code hl_struct" href="structdl_1_1_animation_clip.html">AnimationClip</a></div>
|
||
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>{</div>
|
||
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"><a class="line" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c"> 98</a></span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> <a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>;</div>
|
||
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc"> 99</a></span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> <a class="code hl_variable" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">_t1</a>;</div>
|
||
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81"> 100</a></span> std::vector<BoneKeyFrameMulti> <a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>;</div>
|
||
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="keyword">public</span>:</div>
|
||
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="structdl_1_1_animation_clip.html#ad3fc7b60d84211960584820a4500433d"> 102</a></span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> <a class="code hl_function" href="structdl_1_1_animation_clip.html#ad3fc7b60d84211960584820a4500433d">GetClipEndTime</a>()</div>
|
||
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> {</div>
|
||
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">_t1</a>;</div>
|
||
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> }</div>
|
||
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> <span class="comment">//插值</span></div>
|
||
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"><a class="line" href="structdl_1_1_animation_clip.html#a99fc3cd88921da8766228f5a8215cba7"> 107</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="structdl_1_1_animation_clip.html#a99fc3cd88921da8766228f5a8215cba7">Interpolate</a>(<a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> t, std::vector<Matrix4>& bone_trans)</div>
|
||
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> {</div>
|
||
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>.size(); ++i)</div>
|
||
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> {</div>
|
||
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> <a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>[i].Interpolate(t, bone_trans[i]);</div>
|
||
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> }</div>
|
||
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> }</div>
|
||
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span>};</div>
|
||
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
|
||
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html"> 117</a></span><span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_bone_data.html">BoneData</a></div>
|
||
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span>{</div>
|
||
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#ac22dade55c1e8f81ea3e0892cd321190"> 119</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_model_loader.html">ModelLoader</a>;</div>
|
||
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#aaa5a5a1296341d5d91f60f4d9fde2d1c"> 120</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_factory_imp.html">FactoryImp</a>;</div>
|
||
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#a13aa30a584ab529661b4f1c2227f6b29"> 121</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_bone_animation.html">BoneAnimation</a>;</div>
|
||
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#ae4af50bf1743d112cb2c2c784bea21c8"> 122</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_actor.html">Actor</a>;</div>
|
||
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="keyword">public</span>:</div>
|
||
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="comment">//偏移矩阵先初始化</span></div>
|
||
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#a1d9d699da21fb5ecb74d9e2ba0a68b6f"> 125</a></span> <span class="keywordtype">size_t</span> <a class="code hl_function" href="classdl_1_1_bone_data.html#a1d9d699da21fb5ecb74d9e2ba0a68b6f">GetBoneSize</a>() { <span class="keywordflow">return</span> _allBoneOffset.size(); }</div>
|
||
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#a190ded21078de0629145e66eb1f12df4"> 126</a></span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> <a class="code hl_function" href="classdl_1_1_bone_data.html#a190ded21078de0629145e66eb1f12df4">GetClipEndTime</a>(std::string_view cilp_name)</div>
|
||
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> {</div>
|
||
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> <span class="keyword">auto</span> clip = _allAnimation.find(std::string{ cilp_name });</div>
|
||
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="keywordflow">return</span> clip->second.GetClipEndTime();</div>
|
||
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> }</div>
|
||
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> <span class="comment">//返回偏移矩阵(单位矩阵才是静止状态)</span></div>
|
||
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#a69abda4bd9bcbb81d2f3e1ec74d6d3b3"> 132</a></span> std::vector<Matrix4> <a class="code hl_function" href="classdl_1_1_bone_data.html#a69abda4bd9bcbb81d2f3e1ec74d6d3b3">GetBoneOffset</a>()</div>
|
||
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> {</div>
|
||
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="keywordflow">return</span> _allBoneOffset;</div>
|
||
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> }</div>
|
||
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
|
||
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <span class="comment">//或许可以缓存常用时刻的变换</span></div>
|
||
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#a0ef9a733a03e03899ae33f6491b55150"> 138</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_bone_data.html#a0ef9a733a03e03899ae33f6491b55150">GetFinalTrans</a>(std::string_view clip_name, <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> t,</div>
|
||
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> std::vector<Matrix4>& final_trans)</div>
|
||
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> {</div>
|
||
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">//偏移矩阵数量(骨骼数量)</span></div>
|
||
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keywordtype">size_t</span> num_bone = _allBoneOffset.size();</div>
|
||
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="comment">//变换到父骨骼的矩阵</span></div>
|
||
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> std::vector<Matrix4> trans_to_parent = _allNodeTrans2Parent;</div>
|
||
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
|
||
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">//对指定动画进行插值</span></div>
|
||
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <span class="keyword">auto</span> clip = _allAnimation.find(std::string{ clip_name });</div>
|
||
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> clip->second.Interpolate(t, trans_to_parent);</div>
|
||
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
|
||
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="comment">//将骨骼变换到根空间</span></div>
|
||
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> std::vector<Matrix4> trans_to_root(num_bone);</div>
|
||
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
|
||
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <span class="comment">//计算trans_to_root</span></div>
|
||
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < num_bone; ++i)</div>
|
||
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> {</div>
|
||
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment">//父骨骼下标</span></div>
|
||
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> <span class="keywordtype">int</span> index_parent = _allNodeParent[i];</div>
|
||
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> <span class="keywordflow">if</span>(index_parent == -1)<span class="comment">//指向-1为根骨骼,无需计算</span></div>
|
||
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> trans_to_root[i] = trans_to_parent[i];</div>
|
||
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> {</div>
|
||
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="comment">//自己到父</span></div>
|
||
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a>& mat_to_parent = trans_to_parent[i];</div>
|
||
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> <span class="comment">//父骨骼 到 根 的矩阵</span></div>
|
||
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a>& parent_to_root = trans_to_root[index_parent];</div>
|
||
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">//自己到根的矩阵 = 自己到父,再父到根</span></div>
|
||
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> trans_to_root[i] = parent_to_root * mat_to_parent;</div>
|
||
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> }</div>
|
||
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> }</div>
|
||
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> </div>
|
||
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> <span class="comment">//计算最终矩阵</span></div>
|
||
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < num_bone; ++i)</div>
|
||
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> {</div>
|
||
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a>& mat_offset = _allBoneOffset[i];</div>
|
||
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> <a class="code hl_class" href="classdl_1_1_matrix.html">Matrix4</a>& mat_to_root = trans_to_root[i];</div>
|
||
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> final_trans[i] = mat_to_root * mat_offset;</div>
|
||
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> }</div>
|
||
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> }</div>
|
||
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> </div>
|
||
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#a15fcf236294d9f6b50c7914daa23aec5"> 180</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_bone_data.html#a15fcf236294d9f6b50c7914daa23aec5">Save</a>(<a class="code hl_class" href="classdl_1_1_stream_output.html">StreamOutput</a>& s)</div>
|
||
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> {</div>
|
||
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&_allNodeParent);</div>
|
||
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&_allNodeTrans2Parent);</div>
|
||
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&_allBoneOffset);</div>
|
||
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> </div>
|
||
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> <span class="keywordtype">size_t</span> size = _allAnimation.size();</div>
|
||
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&size);</div>
|
||
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>& iter : _allAnimation)</div>
|
||
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> {</div>
|
||
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> <span class="keyword">const</span> std::string& name = iter.first;</div>
|
||
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> <span class="keyword">const</span> <a class="code hl_struct" href="structdl_1_1_animation_clip.html">AnimationClip</a>& clip = iter.second;</div>
|
||
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&name);</div>
|
||
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>);</div>
|
||
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">_t1</a>);</div>
|
||
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> <span class="keywordtype">size_t</span> size1 = clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>.size();</div>
|
||
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&size1);</div>
|
||
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < size1; ++i)</div>
|
||
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> {</div>
|
||
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keyword">const</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame_multi.html">BoneKeyFrameMulti</a>& kf_mul = clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>[i];</div>
|
||
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordtype">size_t</span> size2 = kf_mul.<a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.size();</div>
|
||
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&size2);</div>
|
||
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j < size2; ++j)</div>
|
||
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> {</div>
|
||
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <span class="keyword">const</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame.html">BoneKeyFrame</a>& kf = kf_mul.<a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>[j];</div>
|
||
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> s.<a class="code hl_function" href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">Write</a>(&kf);</div>
|
||
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> }</div>
|
||
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> }</div>
|
||
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> }</div>
|
||
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> }</div>
|
||
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_data.html#aa44fb5c70757f9abadce29546bd6729b"> 210</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_bone_data.html#aa44fb5c70757f9abadce29546bd6729b">Load</a>(<a class="code hl_class" href="classdl_1_1_stream_input.html">StreamInput</a>& s)</div>
|
||
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> {</div>
|
||
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&_allNodeParent);</div>
|
||
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&_allNodeTrans2Parent);</div>
|
||
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&_allBoneOffset);</div>
|
||
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
|
||
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordtype">size_t</span> size;</div>
|
||
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&size);</div>
|
||
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> k = 0; k < size; ++k)</div>
|
||
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> {</div>
|
||
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> std::string name;</div>
|
||
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&name);</div>
|
||
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <a class="code hl_struct" href="structdl_1_1_animation_clip.html">AnimationClip</a>& clip = _allAnimation[name];</div>
|
||
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>);</div>
|
||
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">_t1</a>);</div>
|
||
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="keywordtype">size_t</span> size1;</div>
|
||
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&size1);</div>
|
||
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>.resize(size1);</div>
|
||
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < size1; ++i)</div>
|
||
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> {</div>
|
||
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <a class="code hl_struct" href="structdl_1_1_bone_key_frame_multi.html">BoneKeyFrameMulti</a>& kf_mul = clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">_allBoneKeyFrameMulti</a>[i];</div>
|
||
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordtype">size_t</span> size2;</div>
|
||
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&size2);</div>
|
||
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> kf_mul.<a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>.resize(size2);</div>
|
||
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j < size2; ++j)</div>
|
||
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> {</div>
|
||
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> s.<a class="code hl_function" href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">Read</a>(&kf_mul.<a class="code hl_variable" href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">_allKeyFrame</a>[j]);</div>
|
||
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> }</div>
|
||
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> }</div>
|
||
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> }</div>
|
||
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> }</div>
|
||
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="keyword">private</span>:</div>
|
||
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> std::vector<int> _allNodeParent;<span class="comment">//Node的父Node,下标为node_id</span></div>
|
||
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> std::vector<Matrix4> _allNodeTrans2Parent;<span class="comment">//Node到父Node的矩阵</span></div>
|
||
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> std::vector<Matrix4> _allBoneOffset;<span class="comment">//偏移矩阵</span></div>
|
||
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> std::unordered_map<std::string, AnimationClip> _allAnimation;<span class="comment">//动画片段</span></div>
|
||
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span>};</div>
|
||
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
|
||
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html"> 249</a></span><span class="keyword">class </span><a class="code hl_class" href="classdl_1_1_bone_animation.html">BoneAnimation</a></div>
|
||
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span>{</div>
|
||
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="keyword">public</span>:</div>
|
||
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a"> 252</a></span> <a class="code hl_class" href="classdl_1_1_bone_data.html">BoneData</a>* <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">_skinndeData</a>;<span class="comment">//弱引用</span></div>
|
||
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#aadfa623a575148643682709eff3fdf61"> 253</a></span> std::vector<Matrix4> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#aadfa623a575148643682709eff3fdf61">_finalTrans</a>;<span class="comment">//某时间点的最终变换</span></div>
|
||
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#ad9a429741098cfed4d37728f9075b92a"> 254</a></span> std::string <a class="code hl_variable" href="classdl_1_1_bone_animation.html#ad9a429741098cfed4d37728f9075b92a">_clipName</a>;<span class="comment">//当前动画名称</span></div>
|
||
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9"> 255</a></span> <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a>;<span class="comment">//时间点</span></div>
|
||
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#a642e84583945618f0714fb08ed98206a"> 256</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a642e84583945618f0714fb08ed98206a">_id</a>;<span class="comment">//骨骼实例下标(不是ub下标)</span></div>
|
||
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
|
||
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#a32cd45d77c9257d0f63f7f27e5270f99"> 258</a></span> <a class="code hl_function" href="classdl_1_1_bone_animation.html#a32cd45d77c9257d0f63f7f27e5270f99">BoneAnimation</a>() :</div>
|
||
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">_skinndeData</a>{ nullptr },</div>
|
||
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a>{},</div>
|
||
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a642e84583945618f0714fb08ed98206a">_id</a>{(size_t)-1}</div>
|
||
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> {}</div>
|
||
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> </div>
|
||
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> <span class="comment">//t为-1代表 设为起始</span></div>
|
||
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#a722f5217acf68f7eb7a659e74520d71c"> 265</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_bone_animation.html#a722f5217acf68f7eb7a659e74520d71c">Set</a>(std::string_view name, <a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> t)</div>
|
||
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> {</div>
|
||
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> <span class="keyword">auto</span> iter = <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">_skinndeData</a>->_allAnimation.find(std::string{ name });</div>
|
||
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="keywordflow">if</span> (iter == <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">_skinndeData</a>->_allAnimation.end())</div>
|
||
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> {</div>
|
||
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <a class="code hl_define" href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a>(<span class="stringliteral">"指定动画不存在:{}"</span>, name);</div>
|
||
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <span class="keywordflow">return</span>;</div>
|
||
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> }</div>
|
||
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#ad9a429741098cfed4d37728f9075b92a">_clipName</a> = std::string{ name };</div>
|
||
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <a class="code hl_struct" href="structdl_1_1_animation_clip.html">AnimationClip</a>& clip = iter->second;</div>
|
||
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">if</span> (t < 0)</div>
|
||
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a> = clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>;</div>
|
||
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespacedl_1_1_math.html#a179e7cdae2c5e2721dcce18f539ba1dc">Math::IsOutRange</a>(t, clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>, clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">_t1</a>))</div>
|
||
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> {</div>
|
||
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> <a class="code hl_define" href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a>(<span class="stringliteral">"设置动画时间越界:{},{}->{}"</span>, t, clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>, clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">_t1</a>);</div>
|
||
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a> = clip.<a class="code hl_variable" href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">_t0</a>;</div>
|
||
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> }</div>
|
||
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a> = t;</div>
|
||
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> }</div>
|
||
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> </div>
|
||
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="classdl_1_1_bone_animation.html#a5c9b63224b807fc15b7a90d68095ed9b"> 287</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classdl_1_1_bone_animation.html#a5c9b63224b807fc15b7a90d68095ed9b">Update</a>(<a class="code hl_typedef" href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">FloatTime</a> dt)</div>
|
||
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> {</div>
|
||
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a> += dt;</div>
|
||
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a> > <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">_skinndeData</a>-><a class="code hl_function" href="classdl_1_1_bone_data.html#a190ded21078de0629145e66eb1f12df4">GetClipEndTime</a>(<a class="code hl_variable" href="classdl_1_1_bone_animation.html#ad9a429741098cfed4d37728f9075b92a">_clipName</a>))</div>
|
||
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a> = 0;</div>
|
||
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> <span class="keywordflow">if</span>(<span class="keyword">true</span>)</div>
|
||
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">_skinndeData</a>-><a class="code hl_function" href="classdl_1_1_bone_data.html#a0ef9a733a03e03899ae33f6491b55150">GetFinalTrans</a>(<a class="code hl_variable" href="classdl_1_1_bone_animation.html#ad9a429741098cfed4d37728f9075b92a">_clipName</a>, <a class="code hl_variable" href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">_t</a>, <a class="code hl_variable" href="classdl_1_1_bone_animation.html#aadfa623a575148643682709eff3fdf61">_finalTrans</a>);</div>
|
||
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="keywordflow">else</span></div>
|
||
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> {</div>
|
||
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keywordflow">for</span> (<span class="keyword">auto</span>& iter : <a class="code hl_variable" href="classdl_1_1_bone_animation.html#aadfa623a575148643682709eff3fdf61">_finalTrans</a>)</div>
|
||
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> iter.Identity();</div>
|
||
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> }</div>
|
||
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span> }</div>
|
||
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"> 300</span>};</div>
|
||
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> </div>
|
||
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"> 302</span>}</div>
|
||
<div class="ttc" id="aclassdl_1_1_actor_html"><div class="ttname"><a href="classdl_1_1_actor.html">dl::Actor</a></div><div class="ttdoc">3D绘图对象</div><div class="ttdef"><b>Definition:</b> <a href="dl__actor_8h_source.html#l00028">dl_actor.h:29</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html"><div class="ttname"><a href="classdl_1_1_bone_animation.html">dl::BoneAnimation</a></div><div class="ttdoc">骨骼动画实例</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00249">dl_model_bone.h:250</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_a32cd45d77c9257d0f63f7f27e5270f99"><div class="ttname"><a href="classdl_1_1_bone_animation.html#a32cd45d77c9257d0f63f7f27e5270f99">dl::BoneAnimation::BoneAnimation</a></div><div class="ttdeci">BoneAnimation()</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00258">dl_model_bone.h:258</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_a35099e8d4629d5ad12c7b31475df27e9"><div class="ttname"><a href="classdl_1_1_bone_animation.html#a35099e8d4629d5ad12c7b31475df27e9">dl::BoneAnimation::_t</a></div><div class="ttdeci">FloatTime _t</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00255">dl_model_bone.h:255</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_a5c9b63224b807fc15b7a90d68095ed9b"><div class="ttname"><a href="classdl_1_1_bone_animation.html#a5c9b63224b807fc15b7a90d68095ed9b">dl::BoneAnimation::Update</a></div><div class="ttdeci">void Update(FloatTime dt)</div><div class="ttdoc">每帧调用,推进时间点进行插值</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00287">dl_model_bone.h:287</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_a642e84583945618f0714fb08ed98206a"><div class="ttname"><a href="classdl_1_1_bone_animation.html#a642e84583945618f0714fb08ed98206a">dl::BoneAnimation::_id</a></div><div class="ttdeci">size_t _id</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00256">dl_model_bone.h:256</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_a722f5217acf68f7eb7a659e74520d71c"><div class="ttname"><a href="classdl_1_1_bone_animation.html#a722f5217acf68f7eb7a659e74520d71c">dl::BoneAnimation::Set</a></div><div class="ttdeci">void Set(std::string_view name, FloatTime t)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00265">dl_model_bone.h:265</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_a861421ea53bb7fd831f55255bab52d1a"><div class="ttname"><a href="classdl_1_1_bone_animation.html#a861421ea53bb7fd831f55255bab52d1a">dl::BoneAnimation::_skinndeData</a></div><div class="ttdeci">BoneData * _skinndeData</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00252">dl_model_bone.h:252</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_aadfa623a575148643682709eff3fdf61"><div class="ttname"><a href="classdl_1_1_bone_animation.html#aadfa623a575148643682709eff3fdf61">dl::BoneAnimation::_finalTrans</a></div><div class="ttdeci">std::vector< Matrix4 > _finalTrans</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00253">dl_model_bone.h:253</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_animation_html_ad9a429741098cfed4d37728f9075b92a"><div class="ttname"><a href="classdl_1_1_bone_animation.html#ad9a429741098cfed4d37728f9075b92a">dl::BoneAnimation::_clipName</a></div><div class="ttdeci">std::string _clipName</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00254">dl_model_bone.h:254</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html"><div class="ttname"><a href="classdl_1_1_bone_data.html">dl::BoneData</a></div><div class="ttdoc">骨骼数据(多个骨骼)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00117">dl_model_bone.h:118</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html_a0ef9a733a03e03899ae33f6491b55150"><div class="ttname"><a href="classdl_1_1_bone_data.html#a0ef9a733a03e03899ae33f6491b55150">dl::BoneData::GetFinalTrans</a></div><div class="ttdeci">void GetFinalTrans(std::string_view clip_name, FloatTime t, std::vector< Matrix4 > &final_trans)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00138">dl_model_bone.h:138</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html_a15fcf236294d9f6b50c7914daa23aec5"><div class="ttname"><a href="classdl_1_1_bone_data.html#a15fcf236294d9f6b50c7914daa23aec5">dl::BoneData::Save</a></div><div class="ttdeci">void Save(StreamOutput &s)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00180">dl_model_bone.h:180</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html_a190ded21078de0629145e66eb1f12df4"><div class="ttname"><a href="classdl_1_1_bone_data.html#a190ded21078de0629145e66eb1f12df4">dl::BoneData::GetClipEndTime</a></div><div class="ttdeci">FloatTime GetClipEndTime(std::string_view cilp_name)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00126">dl_model_bone.h:126</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html_a1d9d699da21fb5ecb74d9e2ba0a68b6f"><div class="ttname"><a href="classdl_1_1_bone_data.html#a1d9d699da21fb5ecb74d9e2ba0a68b6f">dl::BoneData::GetBoneSize</a></div><div class="ttdeci">size_t GetBoneSize()</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00125">dl_model_bone.h:125</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html_a69abda4bd9bcbb81d2f3e1ec74d6d3b3"><div class="ttname"><a href="classdl_1_1_bone_data.html#a69abda4bd9bcbb81d2f3e1ec74d6d3b3">dl::BoneData::GetBoneOffset</a></div><div class="ttdeci">std::vector< Matrix4 > GetBoneOffset()</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00132">dl_model_bone.h:132</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_bone_data_html_aa44fb5c70757f9abadce29546bd6729b"><div class="ttname"><a href="classdl_1_1_bone_data.html#aa44fb5c70757f9abadce29546bd6729b">dl::BoneData::Load</a></div><div class="ttdeci">void Load(StreamInput &s)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00210">dl_model_bone.h:210</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_factory_imp_html"><div class="ttname"><a href="classdl_1_1_factory_imp.html">dl::FactoryImp</a></div><div class="ttdef"><b>Definition:</b> <a href="dl__factory__imp_8h_source.html#l00025">dl_factory_imp.h:26</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_matrix_html"><div class="ttname"><a href="classdl_1_1_matrix.html">dl::Matrix< Float, 4, 4 ></a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_matrix_html_af7f569fd33da93293d982663e0b319b4"><div class="ttname"><a href="classdl_1_1_matrix.html#af7f569fd33da93293d982663e0b319b4">dl::Matrix::Identity</a></div><div class="ttdeci">void Identity()</div><div class="ttdoc">获得行列式的值,Determinant(A)</div><div class="ttdef"><b>Definition:</b> <a href="dl__matrix_8h_source.html#l00160">dl_matrix.h:160</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_model_loader_html"><div class="ttname"><a href="classdl_1_1_model_loader.html">dl::ModelLoader</a></div><div class="ttdef"><b>Definition:</b> <a href="dl__model__loader_8h_source.html#l00064">dl_model_loader.h:65</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_stream_input_html"><div class="ttname"><a href="classdl_1_1_stream_input.html">dl::StreamInput</a></div><div class="ttdoc">注释参考StreamOutput</div><div class="ttdef"><b>Definition:</b> <a href="dl__stream__input_8h_source.html#l00031">dl_stream_input.h:32</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_stream_input_html_a45078239838139420b8d25dcf412f642"><div class="ttname"><a href="classdl_1_1_stream_input.html#a45078239838139420b8d25dcf412f642">dl::StreamInput::Read</a></div><div class="ttdeci">void Read(T *data)</div><div class="ttdef"><b>Definition:</b> <a href="dl__stream__input_8h_source.html#l00041">dl_stream_input.h:41</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_stream_output_html"><div class="ttname"><a href="classdl_1_1_stream_output.html">dl::StreamOutput</a></div><div class="ttdef"><b>Definition:</b> <a href="dl__stream__output_8h_source.html#l00028">dl_stream_output.h:29</a></div></div>
|
||
<div class="ttc" id="aclassdl_1_1_stream_output_html_ad9ad1a7301369bbb69a9682034e84a88"><div class="ttname"><a href="classdl_1_1_stream_output.html#ad9ad1a7301369bbb69a9682034e84a88">dl::StreamOutput::Write</a></div><div class="ttdeci">void Write(const T *data)</div><div class="ttdoc">写入一个对象</div><div class="ttdef"><b>Definition:</b> <a href="dl__stream__output_8h_source.html#l00043">dl_stream_output.h:43</a></div></div>
|
||
<div class="ttc" id="adl__log_8h_html_abc86a6b34614cb6484cdf935d9350abd"><div class="ttname"><a href="dl__log_8h.html#abc86a6b34614cb6484cdf935d9350abd">log_err</a></div><div class="ttdeci">#define log_err(...)</div><div class="ttdef"><b>Definition:</b> <a href="dl__log_8h_source.html#l00243">dl_log.h:243</a></div></div>
|
||
<div class="ttc" id="adl__matrix_8h_html"><div class="ttname"><a href="dl__matrix_8h.html">dl_matrix.h</a></div><div class="ttdoc">矩阵(列存储)</div></div>
|
||
<div class="ttc" id="adl__stream__input_8h_html"><div class="ttname"><a href="dl__stream__input_8h.html">dl_stream_input.h</a></div></div>
|
||
<div class="ttc" id="adl__stream__output_8h_html"><div class="ttname"><a href="dl__stream__output_8h.html">dl_stream_output.h</a></div><div class="ttdoc">输出流</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_each_html_a70ebcccd1d7b1c9f14c2b4628a7c388c"><div class="ttname"><a href="namespacedl_1_1_each.html#a70ebcccd1d7b1c9f14c2b4628a7c388c">dl::Each::Lerp</a></div><div class="ttdeci">std::array< T, N > Lerp(const std::array< T, N > &a, const std::array< T, N > &b, T t)</div><div class="ttdoc">线性插值</div><div class="ttdef"><b>Definition:</b> <a href="dl__range__each_8h_source.html#l00074">dl_range_each.h:74</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_mat_html_a11f384dbeee6ee2c282d8eaab3e74873"><div class="ttname"><a href="namespacedl_1_1_mat.html#a11f384dbeee6ee2c282d8eaab3e74873">dl::Mat::CreateRotation</a></div><div class="ttdeci">Matrix4 CreateRotation(const Position3 &axis, Float angle)</div><div class="ttdoc">创建旋转矩阵</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_mat_html_a518b7d5cabf8a0cd7a04c2ed49c706cf"><div class="ttname"><a href="namespacedl_1_1_mat.html#a518b7d5cabf8a0cd7a04c2ed49c706cf">dl::Mat::CreateTranslation</a></div><div class="ttdeci">Matrix4 CreateTranslation(const Position3 &t)</div><div class="ttdoc">创建平移矩阵</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_mat_html_aaf966c66eaa955411ca63f74be079c87"><div class="ttname"><a href="namespacedl_1_1_mat.html#aaf966c66eaa955411ca63f74be079c87">dl::Mat::CreateScaling</a></div><div class="ttdeci">Matrix4 CreateScaling(const Position3 &s)</div><div class="ttdoc">创建缩放矩阵</div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a179e7cdae2c5e2721dcce18f539ba1dc"><div class="ttname"><a href="namespacedl_1_1_math.html#a179e7cdae2c5e2721dcce18f539ba1dc">dl::Math::IsOutRange</a></div><div class="ttdeci">constexpr bool IsOutRange(T x, T a, T b)</div><div class="ttdoc">判断数值是否越界(前闭后开)</div><div class="ttdef"><b>Definition:</b> <a href="dl__math_8h_source.html#l00090">dl_math.h:90</a></div></div>
|
||
<div class="ttc" id="anamespacedl_1_1_math_html_a6b4a57c034f58c7ba26105da97b21d22"><div class="ttname"><a href="namespacedl_1_1_math.html#a6b4a57c034f58c7ba26105da97b21d22">dl::Math::Slerp</a></div><div class="ttdeci">Position4 Slerp(const Position4 &q0, const Position4 &q1, const Float &t)</div><div class="ttdoc">球面线性插值</div></div>
|
||
<div class="ttc" id="anamespacedl_html"><div class="ttname"><a href="namespacedl.html">dl</a></div><div class="ttdef"><b>Definition:</b> <a href="dl__array2_8h_source.html#l00017">dl_array2.h:18</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_a7d07deda01ae45d04f3323a4e6445e51"><div class="ttname"><a href="namespacedl.html#a7d07deda01ae45d04f3323a4e6445e51">dl::Position3</a></div><div class="ttdeci">std::array< Float, 3 > Position3</div><div class="ttdef"><b>Definition:</b> <a href="dl__type__def_8h_source.html#l00041">dl_type_def.h:41</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_aa36525eecbb6603a7ae4a63340c205f9"><div class="ttname"><a href="namespacedl.html#aa36525eecbb6603a7ae4a63340c205f9">dl::Position4</a></div><div class="ttdeci">std::array< Float, 4 > Position4</div><div class="ttdef"><b>Definition:</b> <a href="dl__type__def_8h_source.html#l00042">dl_type_def.h:42</a></div></div>
|
||
<div class="ttc" id="anamespacedl_html_ac6695b7cb8160d2c472d5b179d48edef"><div class="ttname"><a href="namespacedl.html#ac6695b7cb8160d2c472d5b179d48edef">dl::FloatTime</a></div><div class="ttdeci">float FloatTime</div><div class="ttdef"><b>Definition:</b> <a href="dl__type__def_8h_source.html#l00048">dl_type_def.h:48</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_animation_clip_html"><div class="ttname"><a href="structdl_1_1_animation_clip.html">dl::AnimationClip</a></div><div class="ttdoc">动画片段,包含多个骨骼</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00096">dl_model_bone.h:97</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_animation_clip_html_a2dd82cacacb157a1ea804b85d665afbc"><div class="ttname"><a href="structdl_1_1_animation_clip.html#a2dd82cacacb157a1ea804b85d665afbc">dl::AnimationClip::_t1</a></div><div class="ttdeci">FloatTime _t1</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00099">dl_model_bone.h:99</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_animation_clip_html_a7c02850896940e32292373ce6929db9c"><div class="ttname"><a href="structdl_1_1_animation_clip.html#a7c02850896940e32292373ce6929db9c">dl::AnimationClip::_t0</a></div><div class="ttdeci">FloatTime _t0</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00098">dl_model_bone.h:98</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_animation_clip_html_a7ec6e2919f7ea3882678f635e26b2d81"><div class="ttname"><a href="structdl_1_1_animation_clip.html#a7ec6e2919f7ea3882678f635e26b2d81">dl::AnimationClip::_allBoneKeyFrameMulti</a></div><div class="ttdeci">std::vector< BoneKeyFrameMulti > _allBoneKeyFrameMulti</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00100">dl_model_bone.h:100</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_animation_clip_html_a99fc3cd88921da8766228f5a8215cba7"><div class="ttname"><a href="structdl_1_1_animation_clip.html#a99fc3cd88921da8766228f5a8215cba7">dl::AnimationClip::Interpolate</a></div><div class="ttdeci">void Interpolate(FloatTime t, std::vector< Matrix4 > &bone_trans)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00107">dl_model_bone.h:107</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_animation_clip_html_ad3fc7b60d84211960584820a4500433d"><div class="ttname"><a href="structdl_1_1_animation_clip.html#ad3fc7b60d84211960584820a4500433d">dl::AnimationClip::GetClipEndTime</a></div><div class="ttdeci">FloatTime GetClipEndTime()</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00102">dl_model_bone.h:102</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_html"><div class="ttname"><a href="structdl_1_1_bone_key_frame.html">dl::BoneKeyFrame</a></div><div class="ttdoc">骨骼关键帧(不变量)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00024">dl_model_bone.h:25</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_html_a0223b91ac7a656073730d79fff499539"><div class="ttname"><a href="structdl_1_1_bone_key_frame.html#a0223b91ac7a656073730d79fff499539">dl::BoneKeyFrame::_translation</a></div><div class="ttdeci">Position3 _translation</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00034">dl_model_bone.h:34</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_html_a34004b0331822f584c476aea35cddb37"><div class="ttname"><a href="structdl_1_1_bone_key_frame.html#a34004b0331822f584c476aea35cddb37">dl::BoneKeyFrame::_roationQuat</a></div><div class="ttdeci">Position4 _roationQuat</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00035">dl_model_bone.h:35</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_html_a6ebf328db2659ee38d40e5c223a2d17d"><div class="ttname"><a href="structdl_1_1_bone_key_frame.html#a6ebf328db2659ee38d40e5c223a2d17d">dl::BoneKeyFrame::_t</a></div><div class="ttdeci">FloatTime _t</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00033">dl_model_bone.h:33</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_html_aa6a284093b73e5d2ad26eccf09bc6c7e"><div class="ttname"><a href="structdl_1_1_bone_key_frame.html#aa6a284093b73e5d2ad26eccf09bc6c7e">dl::BoneKeyFrame::_scaling</a></div><div class="ttdeci">Position3 _scaling</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00036">dl_model_bone.h:36</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_html_aa8fcaabd43e83a4786313744789781a3"><div class="ttname"><a href="structdl_1_1_bone_key_frame.html#aa8fcaabd43e83a4786313744789781a3">dl::BoneKeyFrame::BoneKeyFrame</a></div><div class="ttdeci">BoneKeyFrame()</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00026">dl_model_bone.h:26</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_multi_html"><div class="ttname"><a href="structdl_1_1_bone_key_frame_multi.html">dl::BoneKeyFrameMulti</a></div><div class="ttdoc">多个节点关键帧组成的一个骨架</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00041">dl_model_bone.h:42</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_multi_html_a801246ec1817cdac700af5c2f2d7439b"><div class="ttname"><a href="structdl_1_1_bone_key_frame_multi.html#a801246ec1817cdac700af5c2f2d7439b">dl::BoneKeyFrameMulti::Interpolate</a></div><div class="ttdeci">void Interpolate(FloatTime t, Matrix4 &mat)</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00044">dl_model_bone.h:44</a></div></div>
|
||
<div class="ttc" id="astructdl_1_1_bone_key_frame_multi_html_aed1a920d3b0c7af65182fcb8471eaa01"><div class="ttname"><a href="structdl_1_1_bone_key_frame_multi.html#aed1a920d3b0c7af65182fcb8471eaa01">dl::BoneKeyFrameMulti::_allKeyFrame</a></div><div class="ttdeci">std::vector< BoneKeyFrame > _allKeyFrame</div><div class="ttdef"><b>Definition:</b> <a href="dl__model__bone_8h_source.html#l00093">dl_model_bone.h:93</a></div></div>
|
||
</div><!-- fragment --></div><!-- contents -->
|
||
<!-- start footer part -->
|
||
<hr class="footer"/><address class="footer"><small>
|
||
制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5
|
||
</small></address>
|
||
</body>
|
||
</html>
|