Suchergebnisse
Suchergebnisse 1-20 von insgesamt 66.
Mir ist es Wurscht wie das Objekt dargestellt wird,hauptsache man erkennt überhaupt mal irgend etwas ... Und die transform daten sind für die Füsse,die sind nämlich mit abgespeichert in dem teapot.3ds. Aber es hat mich kein wenig weitergebracht.
Aber wie soll ich SetTransform denn richtig setzen? Ich weiss doch garnicht um welches Objekt es sich handelt zur Laufzeit. Das war jetzt nur ein Beispiel mit dem teapot. Ok,vergessen wir mal das dynamische laden von zufälligen Objekten ... Gehen wir mal davon aus ,es wäre immer der teapot. Wie müsste ich dann SetTransform aufrufen das ich was erkennen kann?
Das ist einfach nur der altbekannte Teapot.3ds Diese Datensätze sind komplett im VB und IB verpackt. Es gibt also eigentlich keinerlei Grund für einen schwarzen Bildschirm. Irgendwas müsste ich also sehen können. Da hilft nur eins debuggen bis der Arzt kommt. Oder opengl benutzen
Hmm,hab ich mir fast gedacht. Ich müsste also eigentlich irgendetwas sehen können nach meinem Draw ...
Hi, habe einen schwarzen Bildschirm nachdem ich DrawIndexedPrimitive aufrufe. Alles ist soweit in Ordnung,der Vertexbuffer,indexbuffer und das setzen der Renderstates sowie der Begin aufruf. Laut DirectX Debug ist auch alles in Ok verlaufen und DrawIndexedPrimitive liefert S_OK. Ist SetTransform eigentlich Pflicht?vor einem Draw aufruf um überhaupt etwas zu sehen? Apropos sehen,da muss ich gleich mal prüfen,in welcher Farbe die überhaupt gezeichnet werden.
Du editierst immer schneller als ich. Danke für deine Geduld und Hilfe dot. Ohne dich wäre ich vermutlich schon Gärtner als Hobby geworden. :lol:
Achsooo ... (hoffentlich :lol: ) Ich habe immer ein Indexarray erzeugt,das pro Arrayelement immer 3 Eckpunkte gehalten hat. index[0] int a,int b,int c; Aus diesem Indexarray habe ich dann meinen Indexbuffer erzeugt. Aber was ich eigentlich aus den Facedaten machen müsste wäre index[0] int a index[1] int b index[2] int c Richtig?
Ich versuch das mal anders,um dir zu erklären was ich mache und warum. Dreieck Vertex[0] = A Vertex[1] = B Vertex[2] = C Index[0] 0,1,2 Der erste Index,hält also den Verweis auf 3 Vertices ,so das DrawPrimitive weiss aus welchen Eckpunkten ein Dreieck gezeichnet werden soll. Zumindest war ich im Glauben,dass DirectX so mit den Buffern funktioniert. Aber anscheinend habe ich es nicht kapiert.
Jetzt kapier ich garnichts mehr. Und ich dachte ich hätte den Indexbuffer verstanden. :lol: Ich dachte der Indexbuffer hält nur die Eckpunkte eines Dreiecks. Damit man weiss wie die Dreiecke zu zeichnen sind. Also benutzt man einen Index um auf 3 Vertex-eckpunkte zu zeigen. Ein Triangleface halt.
Ein Index soll auf 3 Vektoren zeigen,also hat ein Index a,b und c als int wert ... Und ich habe als Primitivecount die Indices angegeben. Also 4096.
hmm,ich habe nur die Face (Dreiecks) koordinaten also a,b und c in einem Indexbuffer abgelegt.
Kommt drauf an welches Modell ich gerade lade. Aber anhand eines Beispiels würden im Vertexbuffer 2828 Vertizen stecken und im Indexbuffer 4096 Indizes. Eine Vertex besteht aus einem 3D vektor und einem 2D vektor. Ein Index besteht aus 3 int werten. Das mit dem debug check ich gerade.
Ich hatte sie vorher schon auf 0.
Danke,einen Teil davon unterstütze ich bereits. Und die 3ds probleme habe ich nun auch lösen können. Es lag zum Teil an den Materialchunks. Und warum ich keine faces hatte lag daran,weil in einem chunk in einer Schleife 1 Byte zuviel gelooped wurde. Das danach nichts mehr passt,ist klar. Jetzt bau ich noch den loop für Objekt Ebenen ein,und dann werden auch 3ds files mit mehreren Objekten unterstützt.
Hi dot, das habe ich schon alles durch. Mit dem letzten Parameter hast du Recht,da habe ich mich verschrieben. Das darf natürlich nicht vert count sein sondern die Anzahl der Primitiven. Ich hoffe aber doch noch,dass es wirklich an falschen Parametern liegt,und nicht an internen Zugriffen auf vorangegangene Einstellungen beim device. Sonst muss ich wohl DX debuggen,bei den super detailierten Fehlermeldungen.
Hi, ich versuche ein Objekt zu zeichnen über DrawIndexedPrimitive. Dies wird mit einem INVALID_CALL bestraft. Ich rufe nach VB.Update() und IB.Update() SetStreamSource(0, vBuffer.GetVB(), 0, sizeof(SVertex)); S_OK SetIndices(indexBuffer.GetIB()); S_OK DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 1, 1, verticesCount, 1, verticesCount); INVALID_CALL Wie müsste DrawIndexedPrimitive denn genau aussehen,wenn ich alles aus dem Buffer zeichnen will?
Ich befasse mich deshalb so intensiv mit 3ds,weil es eben immer noch so weit verbreitet ist. Ausserdem baue ich eine Art Meshviewer,der mehrere Formate unterstützen soll. Es ist nichts weltbewegend wichtiges ,aber an dem arbeite ich ab und an. Welches "gut" dokumentierte Format würdest du denn z.B noch empfehlen?
Weil ich keine Symptome abstelle ,sondern grundsätzlich die Ursachen für Probleme angehe. Und wenn ein 3ds file seine chunks verkehrt oder garnicht beinhaltet,wird auch der Workaround wie z.B der Einsatz eines Konverters,ziemlich sinnfrei sein. Weil er sich die nicht vorhandene Daten auch nicht einfach so herbeizaubern kann ... Was mir vorhin aber noch nicht so klar war,dass Faces wirklich nur beim Facechunk zu erwarten sind. Also habe ich gefragt,ob dem so ist oder ob es vielleicht sein könnte,...
Zitat von »"Phili"« @DigitalDream Niemand zwingt dich, mit 3Ds zu arbeiten, nur weil du 3D studio benutzt. Es gibt tausende von Konvertern im web, mit denen du in 5 sec aus nem 3ds Modell nen anderes zauberst. Das ist mitunter einer der Gründe,warum ich glaube das es soviele Probleme mit 3ds dateien gibt ...
Ich glaube ja das Hauptproblem ist ,dass einige die ihre 3ds files im Netz verbreiten ,sie aus anderen Formaten versucht haben zu konvertieren oder sie mit der eigenen chunkwriter software versucht haben nachzubearbeiten. Und ein weiterer Teil,hat mit ihren Donglehack versionen,auch noch ihren Müll im Netz verbreiten müssen. Und wer weiss,wo Autodesk noch überall Kompatibilitätsprobleme hat,je nach Einstellungen.