Die Texturzuordnung in 3D-Objekten (.pod) erfolgt mit isgl3D nicht korrekt

70

Ich habe ein 3D-iPhone-Modell (.pod) verwendet, das in PVRShammon korrekt angezeigt wird.

Aber als ich dieses 3D-Modell in isgl3D importiert habe und es mit dem strukturierten Bild nicht richtig angezeigt wird, bedeckt das Bild nur einige Bereiche des Objekts mit einigen Linien und Dreiecken.


_cameraController = [[Isgl3dDemoCameraController alloc] initWithCamera:self.camera andView:self];
_cameraController.orbit = 10;
_cameraController.theta = 20;
_cameraController.phi = 0;
_cameraController.doubleTapEnabled = NO;


Isgl3dPODImporter * podImporter = [Isgl3dPODImporter podImporterWithFile:@"iPhone5Spod.pod"];
[podImporter printPODInfo];
[podImporter buildSceneObjects];


Isgl3dTextureMaterial *material2 = [[[Isgl3dTextureMaterial alloc] 
                                         initWithTextureFile:@"DiffuseBody2.jpg"  
                                         shininess:0.0  
                                         precision:Isgl3dTexturePrecisionHigh  
                                         repeatX:YES  
                                         repeatY:YES] autorelease];


mesh2 = [podImporter meshAtIndex:4];
node2 = [self.scene createNodeWithMesh: mesh2 andMaterial:material2];
mesh2.normalizationEnabled = YES;
node2.position = iv3(0, 0, 0);
node2.rotationY = 180;
[podImporter addMeshesToScene:self.scene];


Isgl3dLight * light  = [Isgl3dLight lightWithHexColor:@"FFFFFF" diffuseColor:@"FFFFFF" specularColor:@"FFFFFF" attenuation:0.000];
light.lightType = DirectionalLight;
[light setDirection:-1 y:-1 z:0];


[self setSceneAmbient:[Isgl3dColorUtil rgbString:[podImporter ambientColor]]];
[self schedule:@selector(tick:)];

Weitere Informationen finden Sie im Bild. Ausgabebild in isgl3D-Ansicht

Infaz
quelle
1
Haben Sie PVR-Bilder anstelle von JPEG ausprobiert?
SLF
1
Wo machst du dein UV-Mapping für die Textur? isgl3d.com/tutorials/4/tutorial_3_texture_mapping
slf
3
Sind Sie sicher, dass das Objekt ohne Texturzuordnung korrekt angezeigt wird (also beim Rendern mit einem isGL-Material ohne Textur)? Aus dem Screenshot geht hervor, dass das Problem nicht mit der Textur zusammenhängt. Es sieht eher so aus, als ob isGL3D beim Laden der Scheitelpunktindizes aus der .pod-Datei einen Fehler hätte. Konnten Sie andere .pod-Dateien mit isGL3D erfolgreich laden und anzeigen?
VB_overflow
1
Haben Sie die Netz- und Knotenobjekte initialisiert? Gibt es auch einen Grund, das Netz nur bei Index 4 zu starten? Ich würde versuchen: [podImporter buildSceneObjects]; mesh = [podImporter meshAtIndex: 0]; node = [node createNodeWithMesh: mesh andMaterial: textureMaterial2]; node.position = posVar; node.rotationY = 180; node.doubleSided = YES;
Uvar
1
Wenn ich mir die Texturen anschaue, denke ich, dass das Scheitelpunktformat in Bezug auf die Anzahl der Komponenten nicht richtig eingerichtet ist. Die UVs sind alle durcheinander, und die Tatsache, dass nur einige Polys gerendert werden, bedeutet normalerweise, dass die Normalen der anderen umgedreht werden (und somit die Rückseite ausgesondert wird). Dies kann immer noch etwas rendern, wenn die Reihenfolge und die Anzahl der Gleitkommazahlen für UV und Normal nicht korrekt sind oder wenn nicht alle Felder vom Shader korrekt verwendet werden.
StarShine

Antworten:

1

Das sind nur meine zwei Cent. Entspricht Ihre Textur den Anforderungen von isgl3D?

aus isgl3D Tutorial 3 - Texturzuordnung http://isgl3d.com/tutorials/4/tutorial_3_texture_mapping

Bei Standardbilddateien muss die Bildgröße dem Faktor zwei entsprechen: z. B. 64 x 128, 256 x 32 usw. Bei PVR-Texturen muss die Bilddatei auch quadratisch sein: z. B. 64 x 64, 256 x 256 usw.

Ich hoffe das hilft.

Geeroz
quelle
"Entspricht Ihre Textur den Anforderungen von isgl3D?" - Diese Art von Frage sollte im Kommentar sein
Enamul Hassan
Entschuldigung für die Antwort.
Geeroz