Tidak dapat menampilkan model 3D dengan tekstur yang benar

Saya "mencoba" mempelajari OpenGL menggunakan buku "Mempelajari OpenGL ES untuk iOS: Panduan Praktis untuk Pemrograman Grafik 3D Modern oleh Erik M. Buck"

Saya telah sampai pada tahap di mana saya mencoba memuat model 3D di aplikasi penguji untuk mengonfirmasi pengetahuan saya dan meskipun saya dapat menampilkan modelnya, model tersebut tampak terbalik dan teksturnya tampak sebagian ditampilkan (atau ditampilkan secara tidak benar).

Saya telah mencoba GL_BLEND, GL_DEPTH_TEST, menggunakan orto tidak menggunakan orto tetapi tidak berhasil dan menyadari bahwa saya mungkin melewatkan sesuatu yang integral..berpikir itu mungkin ada hubungannya dengan wajah normal?

inilah yang akan muncul:

masukkan deskripsi gambar di sini

dan inilah yang saya dapatkan:

masukkan deskripsi gambar di siniadakah yang bisa membantu?

Terima kasih


person Piginhat    schedule 31.08.2013    source sumber
comment
Apakah ini benar-benar tekstur? Bagi saya, ini tampak seperti masalah pemusnahan bagian belakang. Coba nonaktifkan itu, dan coba balikkan arah putaran yang dianggap menghadap ke belakang.   -  person ClayMontgomery    schedule 01.09.2013
comment
Tidak yakin, yang saya lakukan adalah menggunakan data objek bola di contoh buku untuk melihat hasil apa yang saya dapatkan dan menampilkan bumi dengan tekstur yang diterapkan seperti di buku. Jadi menurut saya saya melakukannya dengan benar, jika tidak, bola bumi tidak akan ditampilkan dengan benar? Aneh. Saya pada dasarnya mengambil contoh aplikasi yang telah saya tulis ulang dan mengganti objek bola bumi dengan objek molekul. Saya juga telah mencobanya dengan contoh buku lain yang menggunakan model 3d yang dapat diputar, diterjemahkan dan diperbesar dll dan contohnya berfungsi dengan baik tetapi ketika saya mencoba membawa objek saya sendiri, saya mendapatkan tampilan seperti ini?   -  person Piginhat    schedule 01.09.2013
comment
Saya dapat memposting proyek jika itu membantu?   -  person Piginhat    schedule 01.09.2013


Jawaban (2)


Saya pikir kode untuk model bola Anda mengasumsikan bahwa pemusnahan permukaan belakang dinonaktifkan atau memerlukan arah putaran yang berlawanan (searah jarum jam atau berlawanan arah jarum jam) untuk strip segitiganya. Anda harus mencoba menginisialisasi OpenGL ES dengan benar sesuai dengan apa yang diharapkan oleh kode tersebut. Saya akan mencoba ini:

gl.glDisable(GL10.GL_CULL_FACE);

OR

gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CCW);
gl.glCullFace(GL10.GL_BACK);

OR

gl.glEnable(GL10.GL_CULL_FACE);
gl.glFrontFace(GL10.GL_CW);
gl.glCullFace(GL10.GL_BACK);

Untuk informasi lebih lanjut, lihat "Rincian Poligon" di Buku Merah OpenGL, bab 2:

http://www.glprogramming.com/red/chapter02.html
person ClayMontgomery    schedule 01.09.2013
comment
Hai, sangat menghargai bantuan Anda, terima kasih! Saya mencoba saran Anda dan ada beberapa peningkatan dalam hal setidaknya warna tampaknya diterapkan pada bagian model yang benar. ini dengan wajah pemusnahan dinonaktifkan [IMG]i41.tinypic.com/2i9366x.jpg[/ IMG] dan ini menggunakan tampilan depan cw [IMG]i41.tinypic.com /fk19hk.jpg[/IMG] - person Piginhat; 01.09.2013
comment
Saya melihat bola mengharapkan sistem koordinat glFrustumf atau glOrthof. jadi menggunakan orto seperti self.baseEffect.transform.projectionMatrix = GLKMatrix4MakeOrtho(-0.5 * aspekRatio, 0.5 * aspekRatio, -0.5f, 0.5, -5.0, 5.0); memberikan ini [IMG]i43.tinypic.com/2a6ozds.jpg[/IMG] - person Piginhat; 01.09.2013

Penulis buku tersebut memeriksanya untuk saya dan menemukan hal berikut:

Model .obj diproduksi menggunakan "paha depan", poligon bersisi 4, tetapi OpenGL ES hanya dapat merender titik, garis, dan segitiga. Hasilnya, hanya setengah (1 segitiga) dari setiap segi empat yang dirender.

Membuka file .obj di Blender dan mengekspor menggunakan segitiga menghasilkan tampilan yang benar.

Terima kasih kepada Erik Buck karena telah meluangkan waktu untuk membantu salah satu pembacanya dan terima kasih juga kepada @clayMontgomery atas bantuannya ;-)

person Piginhat    schedule 03.09.2013