以下是LibGDX(在Android上)渲染3d手模型的方式(3d模型采用fbx格式,我使用fbx-conv应用程序将其转换为g3db格式)。
如你所见,手上有暗斑。但是,当在Unity3d,Blender或虚幻引擎中渲染相同的模型时,它看起来是正确的。
为了解决这个问题,我确保法线是向外的(我用Blender检查过,并在Blender中运行命令使所有法线向外)。它没有帮助。另外,我在libGDX中添加了额外的定向灯和增加的环境光。再一次,它没有帮助。
modelBatch = new ModelBatch();
UBJsonReader jsonReader = new UBJsonReader();
G3dModelLoader modelLoader = new G3dModelLoader(jsonReader);
modelLeftHand = modelLoader.loadModel(Gdx.files.getFileHandle("data/Hand_R_.g3db", Files.FileType.Internal));
...
// create environment for lighting
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 1f, 1f, 1f, 0.8f));
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 1f, 0f, 0f));
...// In The render() function...
modelBatch.render(modelLeftHand,environment);