Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

1

23.06.2006, 19:54

bones? wie?

hallo zusammen!

ich hab ein wenig mit vertexTweening rumgespielt und hab eingesehen das es
bei komplexen charakteren wohl eher unangebracht ist. dann hab ichs mit vertex
blending versucht! scheint auch nicht das richtige zu sein um ein charakter zu
animieren! dann kam mir das schlagwort "bones" ins sichtfeld. ich hab jetzt ne menge
über bone animation gelesen. verstehe auch die grundsätlichen dinge, doch umsetzen kann
ich sie nicht.
ein bone ist eigentlich nur eine matrix soviel ich weiss. diese matrix kann
ich bspw rotieren lassen, und die im wirkungsbereich liegenden vertices werden
entsprechend mit rotiert. nur wie sage ich dx9 nun das gewisse vertices eben zu
bestimmten bones gehören bzw deren wirkungsbereich ? Vertex Weights? wie beim blending auch? eigentlich ist
es mir egal ab der arm des modells irgendwo aufreist, ich wills ja nur erstmal
verstehen!. vertexblending muss also erstmal nicht mit rein. oder doch?*g
dann hab ich nochwas von MatrixIndices gelesen. hat mich völlig verwirrt!
ich soll also in der FvF declaration ein DWORD wert hinzufügen der dann irgendwas macht.
aber wie? was? warum? *ggg. achja, das ganze erstmal ohne shader!

schade ist das ich mein problem nichtmals konkretisieren kann. hätte gerne einen kleinen
crashkurs zum thema bones mit entsprechendem sourcecode... eine einfache arm animation
damit ich den aufbau des bone systems verstehen kann. in dx9 :) ich dachte auch um das ganze
nicht allzu kompliziert aussehen zu lassen, keinen richtigen arm zu rendern, sondern 3 von
links nach rechts verlaufende quadrate. Oberarm unterarm und hand. so einfach gehaltene
objekte muss man dann wohl nicht aus einer datai laden, und ich kann das bone gerüst
selbst entwerfen. wenn ich nur wüste wie!

wer lust hat kann mir ja helfen :) bitte!
Dezi!

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

2

24.06.2006, 13:59

ein gutes buch zur character/bone animation?

so... mein geburtstag ist nahe und da wird sich bestimmt auch geldgeschenke mässig was tun! kennt denn jemand ein gutes buch, das sich hauptsächlich mit character animation bzw bone animation in dx9 auseinander setzt?
darf ruhig in englisch sein, deutsch wäre mir allerdings lieber!

danke schonmal!
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

3

24.06.2006, 14:25

Hi,

hier ist ein englisches Buch:

Advanced Animation with DirectX

http://books.google.at/books?vid=ISBN1592000371&id=U4uszeA97dMC&printsec=toc&dq=Advanced+Animation&sig=Y87KM77T_1xQyBf2EnoYQVC1aMQ

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

4

24.06.2006, 14:40

danke GBerger! werd mich mal einlesen :)
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

5

24.06.2006, 20:27

static timeGetTime() ???

hab da noch eine andere frage und möchte kein neues thema eröffnen.
es geht um die funktion timeGetTime(). sie liefert die zeit die vergangen ist seit dem letzten systemstart. richtig? also rufe ich die funktion in jedem frame auf. das ergebnis ist von frame zu frame natürlich verschieden. klar. wenn ich die variable in der die zeit gespeichert wird
als static deklariere, bleibt sie auf dem wert den timeGetTime() beim ersten aufruf hatte. wie kommt das? gut.. static variablen behalten ihren alten wert, doch sollte der nicht wieder mit der neuen zeit überschrieben werden sobald im neuen frame timeGetTime() aufgerufen wird?? bin ein wenig verwirrt!!!
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

Phili

unregistriert

6

24.06.2006, 20:34

Wenn du den neuen Wert nicht zuweist, verändert er sich auch nicht...

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

7

24.06.2006, 20:45

hmmm der wird doch in jedem Frame durch einen erneuten aufruf von static DWORD Time = timeGetTime() neu zugewiesen.. dachte ich...
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

Dezibell

Frischling

  • »Dezibell« ist der Autor dieses Themas

Beiträge: 58

Wohnort: Kleve nrw

  • Private Nachricht senden

8

24.06.2006, 20:51

hier mal n kleines Beispiel :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    for(int i=0;i<20;i++)
    {
        static DWORD StartTime = timeGetTime();
        cout << StartTime << endl;
        for(long i=0;i<6500000;i++)
            ;
    }
    return 0;
}


in dieser form behält StartTime den Wert beim ersten aufruf von timeGetTime().
lasse ich den static bezeichener weg, bekommt er immer den neuen wert zugewiesen.

iss ja eigentlich egal, denn ich weiss ja jetzt das es so geht, wär trotzdem nicht schlecht zu wissen warum das so ist :)
DeziBell
ICQ - 219 012 102
ICQ NAME - Stone

9

25.06.2006, 10:17

Beim ersten Funktionsaufruf wird hier die Variable StartTime mit dem aktuellen wert von timeGetTime() initialisiert. Beim wiederholten aufruf der funktion wird die Initialisierung einfach uebergangen. Darum behaelt StartTime beim ersten aufruf den wert von timeGetTime().

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

26.06.2006, 14:14

GBerger hat es auf'n Punkt gebracht.
Du musst also folgendes machen:

C-/C++-Quelltext

1
2
static DWORD StartTime;
StartTime = timeGetTime();

Werbeanzeige