Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2004-11-11 16:17:32 +0300
committerTon Roosendaal <ton@blender.org>2004-11-11 16:17:32 +0300
commit2e4a10253b8f96b631eee8af5e1e711f372612ae (patch)
treef7ac4c363e22d2085397ca9410acdceb424c5476 /source/blender/src/drawaction.c
parent11fe49227b8b3dbcc6dbafbde16ee84c1a2e5af7 (diff)
Fix for bug #1756
This was caused by a very primitive method of interpolating quaternions. It was converting quats to mat and back to quat, and then just doing a linear interpolation. That whilst quaternions are renowned for having good interpolation possible. I've experimented with 2 quaternion interpolation methods, and can only get one to work correctly... the "official" version from Watt brothers I can't get working, both are in arithb.c now. Will arrange *close* review with experienced NLAers for it! But testing here gives fully predictable results. Also changed; - added pointer check in drawaction - changed puldown menu for correct hotkeys for move NLA strips up/down
Diffstat (limited to 'source/blender/src/drawaction.c')
-rw-r--r--source/blender/src/drawaction.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/source/blender/src/drawaction.c b/source/blender/src/drawaction.c
index 402f7684215..278be07b65b 100644
--- a/source/blender/src/drawaction.c
+++ b/source/blender/src/drawaction.c
@@ -877,15 +877,16 @@ static BezTriple **action_to_keylist(bAction *act, int flags, int *totvert)
/* Count required keys */
for (achan=act->chanbase.first; achan; achan=achan->next){
/* Count transformation keys */
- for (icu=achan->ipo->curve.first; icu; icu=icu->next)
- count+=icu->totvert;
-
- /* Count constraint keys */
- for (conchan=achan->constraintChannels.first; conchan; conchan=conchan->next)
- for (icu=conchan->ipo->curve.first; icu; icu=icu->next)
+ if(achan->ipo) {
+ for (icu=achan->ipo->curve.first; icu; icu=icu->next)
count+=icu->totvert;
-
-
+
+ /* Count constraint keys */
+ for (conchan=achan->constraintChannels.first; conchan; conchan=conchan->next)
+ for (icu=conchan->ipo->curve.first; icu; icu=icu->next)
+ count+=icu->totvert;
+
+ }
}
/* Build the list */