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

41

05.11.2011, 03:34

Entschuldigt das ich mich jetzt erst melde aber ich habe erstmal an andern Problemen gearbeitet ^^

Kann mir jemand dabei helfen wie ich die 3D Modelle sortieren kann? Ich kenne mich leider mit Vektor-Rechnung nicht so wirklich aus.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

42

05.11.2011, 10:38

Sortier deine Objekte z.B. nach ihrem Abstand zur Kamera.

43

06.11.2011, 00:28

So in ordnung das habe ich geschafft. Jetzt hätte ich noch das Problem das zb bei meinen Bäumen Grafikfehler auftreten wegen der Transparenz. Sprich ich müsste das 3D-Modell an sich sortieren...doch wie soll ich das hinbekommen?

so sieht der Code aus mit dem ich das model Zeichen:

C-/C++-Quelltext

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
for( UINT iSubset = 0; iSubset < GetNumMaterials(); iSubset++ )
    {
        ID3DXMesh* pMesh = GetMesh();
        Material* pMaterial = GetMaterial( iSubset );
    
        fLightPosition[0] = g_Light1.Position.x;
        fLightPosition[1] = g_Light1.Position.y;
        fLightPosition[2] = g_Light1.Position.z;
        
        V( m_pEffect->SetValue( m_hAmbient, pMaterial->vAmbient, sizeof( D3DXVECTOR3 ) ) );
        V( m_pEffect->SetValue( m_hDiffuse, pMaterial->vDiffuse, sizeof( D3DXVECTOR3 ) ) );
        V( m_pEffect->SetValue( m_hSpecular, pMaterial->vSpecular, sizeof( D3DXVECTOR3 ) ) );
        V( m_pEffect->SetValue( m_hLightColor,D3DXVECTOR3(g_Light1.Ambient.r,g_Light1.Ambient.g,g_Light1.Ambient.b), sizeof( D3DXVECTOR3 ) ) );
        V( m_pEffect->SetTexture( m_hTexture, pMaterial->pTexture ) );
        V( m_pEffect->SetFloat( m_hOpacity, pMaterial->fAlpha ) );
        V( m_pEffect->SetFloatArray( m_hLightPosition, fLightPosition,3 ) );
        V( m_pEffect->SetInt( m_hSpecularPower, pMaterial->nShininess ) );
    
        V( m_pEffect->SetTechnique( pMaterial->hTechnique ) );
        V( m_pEffect->Begin( &cPasses, 0 ) );

        for( iPass = 0; iPass < cPasses; iPass++ )
        {
            V( m_pEffect->BeginPass( iPass ) );

            V( pMesh->DrawSubset( iSubset ) );
            V( m_pEffect->EndPass() );
        }
         V( m_pEffect->End() );
    }

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

44

06.11.2011, 01:11

Ja, das lässt sich leider im Allgemeinen nicht einfach lösen. Ein Trick, der bei konvexen Körpern funktioniert, ist, zuerst nur die Backfaces zu zeichnen und dann die Frontfaces (also 2x mit verschiedenen Cullmodes zu rendern). Bei den Blättern von deinem Baum wird das aber wohl leider nicht funktionieren. Du könntest versuchen, die Dreiecke der Blätter irgendwie zu identifizieren und aus dem Modell zu holen, sodass du sie sortieren und extra rendern kannst...

45

06.11.2011, 01:31

Das klingt verdammt umständlich.

Naja danke für eure hilfe.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

46

06.11.2011, 02:37

Das klingt verdammt umständlich.

Jap. Und wenn sich zwei solche Dreiecke z.B. gegenseitig durchdringen, dann müsstest du überhaupt noch anfangen, die entsprechend zu zerschneiden und die Teile zu sortieren und so Späße. Ist leider nicht so einfach das 100% korrekt hinzubekommen...

Werbeanzeige