使用isgl3D无法正确进行3D对象(.pod)中的纹理映射


70

我使用了3D iphone(.pod)模型,它在PVRShammon中可以正确显示。

但是,当我将3D模型导入isgl3D时,它在带纹理的图像中无法正确显示,该图像仅覆盖了对象的某些区域,并带有一些线和三角形。


_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:)];

有关更多信息,请查看图片。 在isgl3D视图中输出图像


1
您是否尝试过PVR图像而不是JPEG?
2015年

1
您在哪里对纹理进行uv映射?isgl3d.com/tutorials/4/tutorial_3_texture_mapping
2015年

3
您确定对象没有纹理映射即可正确显示(因此,使用isGL“非纹理”材质渲染时)吗?从屏幕快照中看,问题似乎与纹理无关,更像是isGL3D从.pod文件加载顶点索引时会出现错误。您是否能够使用isGL3D成功加载和显示其他.pod文件?
2015年

1
您是否初始化了网格物体和节点对象?另外,是否有理由仅从索引4开始网格?我会尝试:[podImporter buildSceneObjects]; mesh = [podImporter meshAtIndex:0]; node = [node createNodeWithMesh:mesh andMaterial:textureMaterial2]; node.position = posVar; node.rotationY = 180; node.doubleSided =是;
Uvar

1
从纹理的角度来看,我认为顶点格式设置不正确。uv混合在一起,并且仅渲染某些多边形的事实通常意味着其他多边形的法线被翻转(因此背面被剔除)。如果uv和法线的浮点数的顺序和数量不正确,或者着色器没有正确使用所有字段,则仍可以渲染某些内容。
StarShine 2015年

Answers:


1

这只是我的两分钱。您的纹理是否遵循isgl3D要求?

来自isgl3D教程3-纹理映射 http://isgl3d.com/tutorials/4/tutorial_3_texture_mapping

对于标准图像文件,图像大小必须是两个标准的因数:例如64x128、256x32等。对于pvr纹理,图像文件也必须是正方形的:例如64x64、256x256等。

希望对您有所帮助。


“您的纹理是否符合isgl3D的要求?” -这类问题应置评
Enamul Hassan

很抱歉把它放在答案中。
Geeroz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.