Saya mencoba menggambar objek 3D sederhana yang dihasilkan oleh Google SketchUp 8 Pro ke aplikasi WebGL saya, modelnya adalah silinder sederhana.
Saya membuka file yang diekspor dan menyalin posisi simpul, indeks, normals dan koordinat tekstur ke file .json agar dapat menggunakannya pada javascript. Semuanya tampak berfungsi dengan baik, kecuali untuk koordinat tekstur yang memiliki beberapa nilai yang cukup besar, seperti 46,331676 dan juga nilai negatif. Sekarang saya tidak tahu apakah saya salah, tetapi bukankah seharusnya koordinat tekstur 2D berkisar antara 0,0 hingga 1,0 saja?
Nah, menggambar model menggunakan koordinat tekstur ini memberi saya tampilan yang benar-benar aneh, dan saya hanya bisa melihat tekstur dengan benar ketika saya sangat dekat (tidak benar-benar saya, cam) ke model, seolah-olah teksturnya sudah gila-gilaan dikurangi ukurannya dan diulang tanpa batas di wajah model. (Ya, saya menggunakan GL_REPEAT pada bungkus tekstur itu)
Apa yang saya perhatikan adalah bahwa jika saya mendapatkan semua koordinat ini dan membaginya dengan 10 atau 100 saya mendapatkan tampilan yang "normal", tetapi masih belum dalam kisaran 0,0 hingga 1,0.
Ini file json saya: http://pastebin.com/Aa4wvGvv
Berikut adalah Shaders GLSL saya: http://pastebin.com/DR4K37T9
Dan inilah file .X yang diekspor oleh SketchUp: http://pastebin.com/hmYAJZWE
Saya juga mencoba menggambar model ini menggunakan XNA, tetapi masih tidak berfungsi. Menggunakan shaders HLSL ini: http://pastebin.com/RBgVFq08
Saya mencoba mengekspor model yang sama ke berbagai format, collada, fbx, dan x. Semua itu menghasilkan hal yang sama.
Sepertinya SketchUp tidak menormalkan koordinat tekstur Anda, atau menggunakan metrik sendiri. Memiliki texcoords <0 atau> 1 dan GL_REPEAT sebagai pembungkus tekstur berarti bahwa tekstur akan diperkecil agar sesuai dengan geometri dan diulang secara horizontal dan vertikal.
Coba impor mesh dalam paket pemodelan lain (MilkShape, Blender) dan perbaiki peta uv dari sana.
sumber