使用Unity 3D学习LibGdx 3D

LinGdx 3D加载个模型(一)

2022-12-24  本文已影响0人  大旺旺的弟弟小旺旺

目标:

相机知识

一般的分为两种2D正交相机,3D透视相机,直观区别,2D无论看到远近的都是相同的,3D有近大远小的特性。目标是3D那就只看3D了。
libgdx中使用的是PerspectiveCamera

相机的基本设置

相机位置、查看的目标位置、视口的大小,最远和最近距离。

创建相机

创建一个

PerspectiveCamera camera = new PerspectiveCamera(67, 100,100);

设置参数

 camera.position.set(10f, 10, 10f);
 camera.lookAt(0,0, 0);
 camera.near = 1f;
 camera.far = 300f;

简单理解:我在那,我看那,我最近可以看到哪里,最远看到哪里

设置环境光

环境是什么样的,有光??

environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 1, 1, 0, 0.8f));

环境光


image.png

太阳光或者灯泡

   environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 1, 1, 1));
image.png

显示一个模型

加载模型,绘制模型

public class ObjActor extends Actor3D {
    public ObjActor(String path){
        ModelLoader loader = new ObjLoader();
        Model model = loader.loadModel(Gdx.files.internal(path));

        modelInstance = new ModelInstance(model);
        Material cubeMaterial = new Material(ColorAttribute.createSpecular(Color.WHITE),
                ColorAttribute.createSpecular(Color.BLACK));
        model.materials.add(cubeMaterial);
    }

    @Override
    public void draw(ModelBatch batch, Environment environment) {
        batch.render(modelInstance, environment);
    }
}
image.png

unity里面有一个更换材质。emmmm&……

Array<Material> materials = objActor.getModelInstance().materials;
for (Material material : materials) {
        material.set(TextureAttribute.createDiffuse(
            new Texture(Gdx.files.internal("cubelet.png"))));
}
image.png
上一篇 下一篇

猜你喜欢

热点阅读