Java-Gaming.org Hi !
Featured games (83)
games approved by the League of Dukes
Games in Showcase (522)
Games in Android Showcase (127)
games submitted by our members
Games in WIP (590)
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 17: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 20: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]
 

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

The first screenshot will be displayed as a thumbnail.

trollwarrior1 (29 views)
2014-11-22 12:13:56

xFryIx (71 views)
2014-11-13 12:34:49

digdugdiggy (50 views)
2014-11-12 21:11:50

digdugdiggy (44 views)
2014-11-12 21:10:15

digdugdiggy (38 views)
2014-11-12 21:09:33

kovacsa (62 views)
2014-11-07 19:57:14

TehJavaDev (67 views)
2014-11-03 22:04:50

BurntPizza (64 views)
2014-11-03 18:54:52

moogie (80 views)
2014-11-03 06:22:04

CopyableCougar4 (80 views)
2014-11-01 23:36:41
Understanding relations between setOrigin, setScale and setPosition in libGdx
by mbabuskov
2014-10-09 22:35:00

Definite guide to supporting multiple device resolutions on Android (2014)
by mbabuskov
2014-10-02 22:36:02

List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
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!