我正在与LibGDX和Blender一起进行某种初学者的练习,以渲染3d模型。
我创建了一个六面的骰子,将其解开并创建了一个png文件uvmap。在Blender中看起来不错。但是,在游戏窗口中,它显得有些灰白。
我尝试了几种不同的灯光配置,但是没有运气。这可能是一个重大问题吗?有什么建议吗?
下面的屏幕截图和代码。谢谢!
public class ShipRenderer implements ApplicationListener {
public Environment environment;
public PerspectiveCamera cam;
public CameraInputController camController;
public ModelBatch modelBatch;
public Model model;
public ModelInstance instance;
Color lightColor;
PointLight light;
float DISTANCE = 40f;
@Override
public void create() {
modelBatch = new ModelBatch();
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 1f, 1f, 1f, 1.0f));
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(DISTANCE, DISTANCE, DISTANCE);
cam.lookAt(0,0,0);
cam.near = 1f;
cam.far = 150f;
cam.update();
UBJsonReader jsonReader = new UBJsonReader();
G3dModelLoader loader = new G3dModelLoader(jsonReader);
model = loader.loadModel(Gdx.files.internal("dice/dice.g3db"));
instance = new ModelInstance(model);
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
}
@Override
public void render() {
camController.update();
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(cam);
modelBatch.render(instance, environment);
modelBatch.end();
}
答案 0 :(得分:0)
好的,原来我的Blender模型正在“发光”,换句话说,它正在发光。搅拌器3dView却没有显示。
我将Blender文件导出为G3DJ文件,以便能够查看其内容。从那里我们看到“发射”属性为非零。归零,现在看起来正确。这里是白色背景。
非常感谢LibGDX Discord频道!
答案 1 :(得分:0)
如果任何人都遇到此问题,则可以采用以下解决方案在加载模型后删除发射材料的属性。我个人在将fbx导出到json时遇到了麻烦,所以这是对我有用的唯一方法。
private void removeEmissiveAttributes(Model model){
for(Material m : model.materials){
m.remove(ColorAttribute.Emissive);
}
}