Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (408)
games submitted by our members
Games in WIP (293)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
   Home   Help   Search   Login   Register   
  Show Posts
Pages: [1]
1  Game Development / Shared Code / Re: Milkshape3D loader written w/ animation suppor on: 2004-05-14 19:47:26
Raises hand as well, I am currently trying to Port the Real Soon Now Skeletal Tutorial to JOGL. Having Problems.  Embarrassed

Heres my post in the JOGL forum

http://www.java-gaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=jogl;action=display;num=1056133412;start=45#45

Its the last post.
2  Java Game APIs & Engines / JOGL Development / Re: Milkshape loader for JOGL on: 2004-05-13 22:54:56
Just reviving an old thread here  Grin

I am currently in the process of creating a loader for JOGL using the GL4JAVA port of Nehe lesson31 as a basis for my loader.

I have completed the loader but when I try to animate the Model, the Model seems to explode outwards with vertices every where. When I remove the animate function the model loads thing with no Animation.

Did anybody complete their Milkshape Loader with Skeletal Animation ?

If not can anybody have a wee look at my Animation code and see if i have made any mistakes.

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  
36  
37  
38  
39  
40  
41  
42  
43  
44  
45  
46  
47  
48  
49  
50  
51  
52  
53  
54  
55  
56  
57  
58  
59  
60  
61  
62  
63  
64  
65  
66  
67  
68  
69  
70  
71  
72  
73  
74  
75  
76  
77  
78  
79  
80  
81  
82  
83  
84  
85  
86  
87  
88  
89  
90  
91  
92  
93  
94  
      void advancedAnimation(){


            double timer=time.getTime();


            if(timer>m_totalTime){
                  if(m_looping){
                        restart();
                        timer=0;
                  }
                  else{
                        timer=m_totalTime;
                  }
            }

            for (int i=0;i<m_numJoints;i++){
                  float[] transvec= new float[3];
                  Matrix transform=new Matrix();
                  int frame;

                  Joint joint=m_pJoints[i];

                  if (joint.m_numTranslationKeyframes==0 && joint.m_numTranslationKeyframes==0){
                        joint.m_final.set(joint.m_absolute.getMatrix());
                        continue;
                  }
                  frame=joint.m_currentTranslationkeyframe;

                  while (frame < joint.m_numTranslationKeyframes &&
                  joint.m_pTranslationkeyframes[frame].m_time < timer) {
                        frame++;
                  }
                  joint.m_currentTranslationkeyframe = frame;
                  if (frame==0){
                        transvec=joint.m_pTranslationkeyframes[0].m_parameters;
                  }
                  else if (frame==joint.m_numTranslationKeyframes)
                        transvec=joint.m_pTranslationkeyframes[frame-1].m_parameters;
                  else{
                        Keyframe curFrame=joint.m_pTranslationkeyframes[frame];
                        Keyframe prevFrame=joint.m_pTranslationkeyframes[frame-1];

                        float timeDelta=curFrame.m_time-prevFrame.m_time;
                        float interpvalue=(float)((timer-prevFrame.m_time)/timeDelta);

                        transvec[0]=prevFrame.m_parameters[0]+(curFrame.m_parameters[0]
                        -prevFrame.m_parameters[0])*interpvalue;
                        transvec[1]=prevFrame.m_parameters[1]+(curFrame.m_parameters[1]
                        -prevFrame.m_parameters[1])*interpvalue;
                        transvec[2]=prevFrame.m_parameters[2]+(curFrame.m_parameters[2]
                        -prevFrame.m_parameters[2])*interpvalue;
                  }

                  frame=joint.m_currentRotationkeyframe;

                  while (frame < joint.m_numRotationKeyframes &&
                  joint.m_pRotationkeyframes[frame].m_time < timer) {
                        frame++;
                  }
                  joint.m_currentRotationkeyframe=frame;
                  if (frame==0){
                        transform.setRotationRadians(joint.m_pRotationkeyframes[0].m_parameters);
                  }
                  else if (frame==joint.m_numRotationKeyframes)
                        transform.setRotationRadians(joint.m_pRotationkeyframes[frame-1].m_parameters);
                  else{
                        Keyframe curFrame=joint.m_pRotationkeyframes[frame];
                        Keyframe prevFrame=joint.m_pRotationkeyframes[frame-1];

                        float timeDelta=curFrame.m_time-prevFrame.m_time;
                        float interpvalue=(float)((timer-prevFrame.m_time)/timeDelta);

                        Quaternion qPrev= new Quaternion(prevFrame.m_parameters);
                        Quaternion qCur= new Quaternion(curFrame.m_parameters);
                        Quaternion qFinal = new Quaternion(qPrev,qCur,interpvalue);
                        transform.setRotationQuaternion(qFinal);
                  }

                  transform.setTranslation(transvec);

                  Matrix relativeFinal=new Matrix(joint.m_relative.getMatrix());
                  relativeFinal.postMultiply(transform);

                  if (joint.m_parent==-1){
                        joint.m_final.set(relativeFinal.getMatrix());
                  }
                  else{
                        joint.m_final.set(m_pJoints[joint.m_parent].m_final.getMatrix());
                        joint.m_final.postMultiply(relativeFinal);
                  }
            }

      }


Thanks in advance

*****EDIT******

Heres a screen capture of my app running with the Animation function taken out

http://www.honours.pwp.blueyonder.co.uk/noAnim.jpg

With the Animation function put in

http://www.honours.pwp.blueyonder.co.uk/probVertsEverywhere.jpg

*************Another edit**********

Messed about with my animation function, got some sort of animation but it seems like the had is coming out of the models chest and the arms and legs look weird

http://www.honours.pwp.blueyonder.co.uk/probsweirdAnim.jpg

Maybe a problem with my Matrix class or Quaternion class
Pages: [1]
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Get high quality music tracks for your game!

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
cubemaster21 (104 views)
2013-05-17 21:29:12

alaslipknot (113 views)
2013-05-16 21:24:48

gouessej (141 views)
2013-05-16 00:53:38

gouessej (137 views)
2013-05-16 00:17:58

theagentd (149 views)
2013-05-15 15:01:13

theagentd (134 views)
2013-05-15 15:00:54

StreetDoggy (177 views)
2013-05-14 15:56:26

kutucuk (200 views)
2013-05-12 17:10:36

kutucuk (201 views)
2013-05-12 15:36:09

UnluckyDevil (207 views)
2013-05-12 05:09:57
Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38

Java Data structures
by Roquen
2013-03-29 13:21:12

Topic Request
by kutucuk
2013-03-22 21:42:01
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!
Page created in 0.13 seconds with 21 queries.