Rumah > Java > teks badan

Grid nyahpepijat untuk libgdx

王林
Lepaskan: 2024-02-22 14:31:07
ke hadapan
901 orang telah melayarinya

Lajur Soal Jawab java yang dibawakan oleh editor PHP Zimo akan membincangkan fungsi grid penyahpepijatan dalam enjin permainan libgdx hari ini. libgdx ialah rangka kerja pembangunan permainan merentas platform yang berkuasa fungsi grid penyahpepijatannya boleh membantu pembangun adegan permainan nyahpepijat dengan lebih baik dan meningkatkan kecekapan pembangunan. Artikel ini akan memperkenalkan secara terperinci cara mendayakan dan menggunakan grid nyahpepijat dalam libgdx untuk membantu pembangun menggunakan ciri ini dengan lebih baik untuk pembangunan permainan.

Kandungan soalan

Bolehkah saya melukis grid 3d dalam aplikasi libgdx saya supaya saya boleh mengezum masuk dan keluar dari grid untuk melihat apa yang berlaku dengan aplikasi saya? Sebagai contoh, saya cuba mencipta sfera mudah yang sepatutnya berada di tengah-tengah skrin, tetapi ia tidak dan ia tersepit atau sesuatu.

Saya ingin tahu di mana kamera saya dan apakah perspektif kamera, semuanya dalam pemandangan. Inilah kodnya kerana stackoverflow memintanya.

@Override
    public void create() {
        modelBatch = new ModelBatch();
        environment = new Environment();
        environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
        environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, 10f, 10f, 20f));

        cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
        cam.position.set(150f, -9f, 200f);
        cam.lookAt(0, 0, 0);
        cam.near = 1f;
        cam.far = 300f;
        cam.update();


        ModelBuilder modelBuilder = new ModelBuilder();
        model = modelBuilder.createSphere(120f, 120f, 120, 32, 32,
                new Material(ColorAttribute.createDiffuse(Color.GREEN)),
                VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
        instance = new ModelInstance(model);
        instance.transform.set(new Vector3(100, 100, 0), new Quaternion());
    }
Salin selepas log masuk

Bolehkah saya melakukan ini?

Penyelesaian

Selepas beberapa carian saya menjumpai senarai contoh libgdx yang menakjubkan ini, termasuk grid dengan paksi:

private void createaxes() {
        final float grid_min = -viewportwidth;
        final float grid_max = viewportwidth;
        final float grid_step = viewportwidth / 10;

        modelbuilder modelbuilder = new modelbuilder();
        modelbuilder.begin();
        meshpartbuilder builder = modelbuilder.part("grid", gl20.gl_lines, usage.position | usage.colorunpacked, new material());
        builder.setcolor(color.light_gray);
        for (float t = grid_min; t <= grid_max; t += grid_step) {
            builder.line(t, 0, grid_min, t, 0, grid_max);
            builder.line(grid_min, 0, t, grid_max, 0, t);
        }
        builder = modelbuilder.part("axes", gl20.gl_lines, usage.position | usage.colorunpacked, new material());
        builder.setcolor(color.red);
        builder.line(0, 0, 0, 100, 0, 0);
        builder.setcolor(color.green);
        builder.line(0, 0, 0, 0, 100, 0);
        builder.setcolor(color.blue);
        builder.line(0, 0, 0, 0, 0, 100);
        model axesmodel = modelbuilder.end();
        models.add(axesmodel);
        modelinstance instance = new modelinstance(axesmodel);
        instances.add(instance);
    }
Salin selepas log masuk

Berikut ialah contoh cara menggunakannya: https://www.php.cn/link/2d0098b9484a341987c5b11e51d7b79f

Anda boleh menggunakan "createlinegrid" pada modelbuilder untuk mencipta Anda grid yang dilanjutkan ia) > Kapal terbang.

Contohnya:

grid = modelbuilder.createlinegrid(
   32, 32, 10.0f, 10.0f, 
    new material(colorattribute.creatediffuse(color.red)), 
    vertexattributes.usage.position | vertexattributes.usage.normal);

gridinstance = new modelinstance(grid);
Salin selepas log masuk

Yang

. Kemudian anda hanya meletakkan gridmodelgridinstancemodelinstance dalam: render 调用包含到您的 modelbatch

modelBatch.render(gridInstance);
Salin selepas log masuk
Melakukan ini pada kod anda menghasilkan paparan berikut:

Anda boleh menyesuaikan bilangan garisan grid dan jaraknya untuk memenuhi keperluan anda.

Atas ialah kandungan terperinci Grid nyahpepijat untuk libgdx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan