﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3AKazanbas%2FCollada_Animation_Import</id>
	<title>利用者:Kazanbas/Collada Animation Import - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3AKazanbas%2FCollada_Animation_Import"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Kazanbas/Collada_Animation_Import&amp;action=history"/>
	<updated>2026-07-31T19:08:49Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Kazanbas/Collada_Animation_Import&amp;diff=91577&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Kazanbas/Collada_Animation_Import&amp;diff=91577&amp;oldid=prev"/>
		<updated>2018-06-28T18:44:11Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 18:44時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Kazanbas/Collada_Animation_Import&amp;diff=91576&amp;oldid=prev</id>
		<title>wiki&gt;Kazanbas: added content</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Kazanbas/Collada_Animation_Import&amp;diff=91576&amp;oldid=prev"/>
		<updated>2009-11-29T13:44:01Z</updated>

		<summary type="html">&lt;p&gt;added content&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=COLLADA Animation Import: How It Works=&lt;br /&gt;
&lt;br /&gt;
==Abbreviations used==&lt;br /&gt;
tm = transformation (rotation, scale, translation, etc.), tms = transformations&lt;br /&gt;
&lt;br /&gt;
==The Problem==&lt;br /&gt;
&lt;br /&gt;
DAE has a very specific way of describing object tm. For example (excerpt from [[#References|[1]]]):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;lt;node id=&amp;quot;l_hip&amp;quot; name=&amp;quot;l_hip&amp;quot; sid=&amp;quot;l_hip&amp;quot; type=&amp;quot;JOINT&amp;quot;&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;translate sid=&amp;quot;translate&amp;quot;&amp;amp;gt;0.450181 0.049889 0.340342&amp;amp;lt;/translate&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;rotate sid=&amp;quot;jointOrientZ&amp;quot;&amp;amp;gt;0 0 1.000000 -81.926788&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;rotate sid=&amp;quot;jointOrientY&amp;quot;&amp;amp;gt;0 1.000000 0 -3.109476&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;rotate sid=&amp;quot;jointOrientX&amp;quot;&amp;amp;gt;1.000000 0 0 0&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;rotate sid=&amp;quot;rotateY&amp;quot;&amp;amp;gt;0 1.000000 0 0&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;rotate sid=&amp;quot;rotateAxisX&amp;quot;&amp;amp;gt;1.000000 0 0 -150.000000&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
  &amp;amp;lt;node id=&amp;quot;l_knee&amp;quot; name=&amp;quot;l_knee&amp;quot; sid=&amp;quot;l_knee&amp;quot; type=&amp;quot;JOINT&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;translate sid=&amp;quot;translate&amp;quot;&amp;amp;gt;1.833014 -0.024761 -0.002519&amp;amp;lt;/translate&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;rotate sid=&amp;quot;jointOrientZ&amp;quot;&amp;amp;gt;0 0 1.000000 2.742172&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;rotate sid=&amp;quot;jointOrientY&amp;quot;&amp;amp;gt;0 1.000000 0 -8.695618&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;rotate sid=&amp;quot;jointOrientX&amp;quot;&amp;amp;gt;1.000000 0 0 -120.102058&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;rotate sid=&amp;quot;rotateZ&amp;quot;&amp;amp;gt;0 0 1.000000 0&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;rotate sid=&amp;quot;rotateAxisX&amp;quot;&amp;amp;gt;1.000000 0 0 -167.476486&amp;amp;lt;/rotate&amp;amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This shows 2 nodes, &amp;quot;l_knee&amp;quot; is a child node of &amp;quot;l_hip&amp;quot; (it's tms are in parent space).&lt;br /&gt;
Both have a series of tms (there can be any number them) that have to be applied sequentially to produce the final tm.&lt;br /&gt;
&lt;br /&gt;
Each tm can be driven by anim curve.&lt;br /&gt;
&lt;br /&gt;
==How This Fits Into Blender==&lt;br /&gt;
&lt;br /&gt;
To correctly translate DAE tms to a Blender object's rotation, scale, location, the following is done:&lt;br /&gt;
&lt;br /&gt;
Separately for rotation, scale and location:&lt;br /&gt;
* find all keys at which to sample&lt;br /&gt;
* at each key: evalute the whole transform, write it&lt;br /&gt;
&lt;br /&gt;
This is simple. Now the difficult part.&lt;br /&gt;
&lt;br /&gt;
==How Bone Animation Is Translated==&lt;br /&gt;
&lt;br /&gt;
For bone animation, DAE joint tm cannot be used &amp;quot;as is&amp;quot; for a Blender bone. Because:&lt;br /&gt;
* in Blender, Y axis is the bone length direction. In DAE, there's no such convention (there're no bones actually, only arbitrarily-oriented nodes)&lt;br /&gt;
* in Blender, bone animation is stored as relative to bone rest pose, in DAE it's plain object-space&lt;br /&gt;
&lt;br /&gt;
So bone animation has to be converted somehow.&lt;br /&gt;
&lt;br /&gt;
The following formula is used to translate a bone animation key:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
K = iR * M * iR_dae * R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where R and iR are Blender bone rest matrix and it's inverse, iR_dae is an inverse of DAE joint rest matrix, M is an evaluated joint matrix.&lt;br /&gt;
All matrices are world-space.&lt;br /&gt;
&lt;br /&gt;
(M * iR_dae) gives a world-space change of a joint from it's rest pose.&lt;br /&gt;
Post-multiplying this change by R gives a world-space Blender bone matrix.&lt;br /&gt;
Pre-multiplying the result by iR gives a matrix that changes a Blender bone rest pose the same way it changed a DAE joint.&lt;br /&gt;
&lt;br /&gt;
It took me 2 weeks to determine this formula. Yes, I should read more maths books :)&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Seymour_anim2.dae from [http://collada.org/owl http://collada.org/owl]&lt;/div&gt;</summary>
		<author><name>wiki&gt;Kazanbas</name></author>
		
	</entry>
</feed>