2015-08-20 2 views
1

Я скачал модель таблицы из: archive3d, преобразованный в .3DS модели с помощью блендера .fbx и используя FBX-конвертер, предоставленный libGDX, к .g3db формат модель. я включил все текстур с модели в активов папки.Модель ошибка загрузки в libGDX

Вот мой код:

`@Override 
    public void create() { 
     camera = new PerspectiveCamera(75, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
     camera.position.set(0f, 0f, 2f); 
     camera.lookAt(0f, 0f, 0f); 
     camera.near = 0.1f; 
     camera.far = 300f;` 

batch = new ModelBatch(); 

UBJsonReader jsonReader = new UBJsonReader(); 
G3dModelLoader modelLoader = new G3dModelLoader(jsonReader); 
model = modelLoader.loadModel(Gdx.files.internal("table.g3db")); 
modelInstance = new ModelInstance(model); 

environment = new com.badlogic.gdx.graphics.g3d.Environment(); 
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.8f, 0.8f, 0.8f, 1f)); 

@Override 
    public void render() { 
     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

     camera.update(); 

     batch.begin(camera); 
     batch.render(modelInstance, environment); 
     batch.end(); 
    } 

я получаю только черный пустой экран без без ошибок.

ответ

1

Сначала измените свой четкий цвет на нечто, отличное от черного. Таким образом, вы можете проверить, не отображается ли ваша модель (например, потому что она не видна) или ваша модель имеет черный материал (например, отсутствующие текстуры или неправильные нормали).

Gdx.gl.glClearColor(0.5, 0.2, 0.6, 1); 

Далее удалите переменную environment. Не нужно применять огни, когда они даже не отображаются без них.

Если проблема все еще существует, следуйте this tutorial. Удостоверьтесь, что поняли это, включая часть CameraInputController внизу. Затем добавьте CameraInputController в ваше приложение, чтобы вы могли перемещать камеру вокруг, увеличивать и уменьшать масштаб и т. Д. Также исправьте ближнюю и дальнюю плоскость вашей камеры. 0.1f для ближней плоскости слишком близко к нулю, что может вызвать проблемы, вместо этого установите его как минимум на 1f. Ваш дальний самолет установлен на 300f единиц, поэтому, если ваша модель больше, чем вы ее не увидите (полностью). Для тестирования установите его на 10000f или что-то (не забудьте впоследствии его уменьшить).

В большинстве случаев проблема вызвана слишком большой или неуместной моделью. Вы также сможете увидеть и исправить это в Blender. Для тестирования вы можете также уменьшаете модель в коде:

modelInstance.transform.scale(0.05f, 0.05f, 0.05f); 

Проверить this wiki page для более советов по экспорту вашей модели правильно. Например. ваши текстуры могут быть неправильно применены в Blender, или ваша вершинная обмотка может быть неправильной, вызвав неправильное удаление лица.

Если все это не помогает проверить, что ваш код работает с какой-либо другой моделью (например, the ones used in the libgdx tests или in this tutorial). Затем convert your model to a g3dj file откройте его текстовым редактором и проверьте его на наличие проблем.

+0

Изменение цвета работает только в том случае, если я не загружаю модель, я попытался изменить настройки камеры, но все равно ничего.Я использовал модели, рекомендованные вами, и они работают, если я использую предварительно отформатированные модели .g3db, поэтому я предполагаю, что это некоторая проблема с fbx-conv, данная libGDX. –

+0

Поскольку я являюсь основным разработчиком fbx-conv, я могу заверить вас, что ваша догадка неверна. Возможно, снова прочитайте мой ответ и попробуйте то, что я предложил. – Xoppa

0

проверить, если при использовании fbx-conv проверить, есть ли у вас предупреждение о наличии слишком большого числа вершин. Проверьте, совместимы ли все файлы материалов и изображения с вашей моделью с libgx.

0

Слишком много вершин. Я считаю, что используется подписанный короткий int, что подразумевает ограничение 32k. Модели, которые вы предоставили ссылку, довольно большие, поэтому, если вы просто преобразовали модель без предварительной оптимизации, она будет слишком большой.

Смежные вопросы