Программисты JAVA общаются здесь
Anonymous
Сбойная модель Blender в игре Libgdx
Сообщение
Anonymous » 07 янв 2025, 03:15
Я впервые занимаюсь 3D-разработкой в libgdx
поэтому мой первый шаг — загрузка исходной 3D-модели автомобиля
вот что моей машине должно понравиться:
https://sketchfab.com/3d-models/subaru- ... 0a6f5d029d
но вместо этого это выглядит так:
https://go.screenpal.com/watch/cTVicInewRW (видео, которое лучше показывает, насколько глючит)
так что это мой код:
Код: Выделить всё
package io.github.rally3d;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Cubemap;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector3;
import net.mgsx.gltf.loaders.gltf.GLTFLoader;
import net.mgsx.gltf.scene3d.attributes.PBRCubemapAttribute;
import net.mgsx.gltf.scene3d.attributes.PBRTextureAttribute;
import net.mgsx.gltf.scene3d.lights.DirectionalLightEx;
import net.mgsx.gltf.scene3d.scene.Scene;
import net.mgsx.gltf.scene3d.scene.SceneAsset;
import net.mgsx.gltf.scene3d.scene.SceneManager;
import net.mgsx.gltf.scene3d.scene.SceneSkybox;
import net.mgsx.gltf.scene3d.utils.IBLBuilder;
public class Main extends ApplicationAdapter
{
private SceneManager sceneManager;
private SceneAsset sceneAsset;
private Scene scene;
private PerspectiveCamera camera;
private Cubemap diffuseCubemap;
private Cubemap environmentCubemap;
private Cubemap specularCubemap;
private Texture brdfLUT;
private float time;
private SceneSkybox skybox;
private DirectionalLightEx light;
private FirstPersonCameraController cameraController;
@Override
public void create() {
// create scene
sceneAsset = new GLTFLoader().load(Gdx.files.internal("untitled.gltf"));
scene = new Scene(sceneAsset.scene);
sceneManager = new SceneManager();
sceneManager.addScene(scene);
// setup camera (The BoomBox model is very small so you may need to adapt camera settings for your scene)
camera = new PerspectiveCamera(60f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
float d = .02f;
camera.near = d / 1000f;
camera.far = 2000;
sceneManager.setCamera(camera);
cameraController = new FirstPersonCameraController(camera);
Gdx.input.setInputProcessor(cameraController);
// setup light
light = new DirectionalLightEx();
light.direction.set(1, -3, 1).nor();
light.color.set(Color.WHITE);
sceneManager.environment.add(light);
// setup quick IBL (image based lighting)
// IBLBuilder iblBuilder = IBLBuilder.createOutdoor(light);
// environmentCubemap = iblBuilder.buildEnvMap(1024);
// diffuseCubemap = iblBuilder.buildIrradianceMap(256);
// specularCubemap = iblBuilder.buildRadianceMap(10);
// iblBuilder.dispose();
// This texture is provided by the library, no need to have it in your assets.
brdfLUT = new Texture(Gdx.files.classpath("net/mgsx/gltf/shaders/brdfLUT.png"));
sceneManager.setAmbientLight(0f);
// sceneManager.environment.set(new PBRTextureAttribute(PBRTextureAttribute.BRDFLUTTexture, brdfLUT));
// sceneManager.environment.set(PBRCubemapAttribute.createSpecularEnv(specularCubemap));
// sceneManager.environment.set(PBRCubemapAttribute.createDiffuseEnv(diffuseCubemap));
// setup skybox
// skybox = new SceneSkybox(environmentCubemap);
// sceneManager.setSkyBox(skybox);
}
@Override
public void resize(int width, int height) {
sceneManager.updateViewport(width, height);
}
@Override
public void render() {
float deltaTime = Gdx.graphics.getDeltaTime();
time += deltaTime;
cameraController.update();
scene.modelInstance.transform.rotate(Vector3.Y, 10 * deltaTime)
// render
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
sceneManager.update(deltaTime);
sceneManager.render();
}
@Override
public void dispose() {
sceneManager.dispose();
sceneAsset.dispose();
environmentCubemap.dispose();
diffuseCubemap.dispose();
specularCubemap.dispose();
brdfLUT.dispose();
skybox.dispose();
}
}
Любой ответ будет получен! спасибо!!
Подробнее здесь:
https://stackoverflow.com/questions/793 ... ibgdx-game
1736208916
Anonymous
Я впервые занимаюсь 3D-разработкой в libgdx поэтому мой первый шаг — загрузка исходной 3D-модели автомобиля вот что моей машине должно понравиться: https://sketchfab.com/3d-models/subaru-impreza-90ac9739c6b74a64bcddd10a6f5d029d но вместо этого это выглядит так: https://go.screenpal.com/watch/cTVicInewRW (видео, которое лучше показывает, насколько глючит) так что это мой код: [code]package io.github.rally3d; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Cubemap; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.PerspectiveCamera; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector3; import net.mgsx.gltf.loaders.gltf.GLTFLoader; import net.mgsx.gltf.scene3d.attributes.PBRCubemapAttribute; import net.mgsx.gltf.scene3d.attributes.PBRTextureAttribute; import net.mgsx.gltf.scene3d.lights.DirectionalLightEx; import net.mgsx.gltf.scene3d.scene.Scene; import net.mgsx.gltf.scene3d.scene.SceneAsset; import net.mgsx.gltf.scene3d.scene.SceneManager; import net.mgsx.gltf.scene3d.scene.SceneSkybox; import net.mgsx.gltf.scene3d.utils.IBLBuilder; public class Main extends ApplicationAdapter { private SceneManager sceneManager; private SceneAsset sceneAsset; private Scene scene; private PerspectiveCamera camera; private Cubemap diffuseCubemap; private Cubemap environmentCubemap; private Cubemap specularCubemap; private Texture brdfLUT; private float time; private SceneSkybox skybox; private DirectionalLightEx light; private FirstPersonCameraController cameraController; @Override public void create() { // create scene sceneAsset = new GLTFLoader().load(Gdx.files.internal("untitled.gltf")); scene = new Scene(sceneAsset.scene); sceneManager = new SceneManager(); sceneManager.addScene(scene); // setup camera (The BoomBox model is very small so you may need to adapt camera settings for your scene) camera = new PerspectiveCamera(60f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); float d = .02f; camera.near = d / 1000f; camera.far = 2000; sceneManager.setCamera(camera); cameraController = new FirstPersonCameraController(camera); Gdx.input.setInputProcessor(cameraController); // setup light light = new DirectionalLightEx(); light.direction.set(1, -3, 1).nor(); light.color.set(Color.WHITE); sceneManager.environment.add(light); // setup quick IBL (image based lighting) // IBLBuilder iblBuilder = IBLBuilder.createOutdoor(light); // environmentCubemap = iblBuilder.buildEnvMap(1024); // diffuseCubemap = iblBuilder.buildIrradianceMap(256); // specularCubemap = iblBuilder.buildRadianceMap(10); // iblBuilder.dispose(); // This texture is provided by the library, no need to have it in your assets. brdfLUT = new Texture(Gdx.files.classpath("net/mgsx/gltf/shaders/brdfLUT.png")); sceneManager.setAmbientLight(0f); // sceneManager.environment.set(new PBRTextureAttribute(PBRTextureAttribute.BRDFLUTTexture, brdfLUT)); // sceneManager.environment.set(PBRCubemapAttribute.createSpecularEnv(specularCubemap)); // sceneManager.environment.set(PBRCubemapAttribute.createDiffuseEnv(diffuseCubemap)); // setup skybox // skybox = new SceneSkybox(environmentCubemap); // sceneManager.setSkyBox(skybox); } @Override public void resize(int width, int height) { sceneManager.updateViewport(width, height); } @Override public void render() { float deltaTime = Gdx.graphics.getDeltaTime(); time += deltaTime; cameraController.update(); scene.modelInstance.transform.rotate(Vector3.Y, 10 * deltaTime) // render Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); sceneManager.update(deltaTime); sceneManager.render(); } @Override public void dispose() { sceneManager.dispose(); sceneAsset.dispose(); environmentCubemap.dispose(); diffuseCubemap.dispose(); specularCubemap.dispose(); brdfLUT.dispose(); skybox.dispose(); } } [/code] Любой ответ будет получен! спасибо!! Подробнее здесь: [url]https://stackoverflow.com/questions/79334639/glitched-blender-model-on-libgdx-game[/url]