- 317
- 10
Всем доброго времени суток!
Я пытаюсь отрендерить pmx модель. Вроде работает, но криво. Сам баг видно на этих скринах:
Screenshot
Screenshot
Все меняется, когда меняю значение в этой строке. GL11.glBegin(2);
Вот так должно быть: Screenshot
С гл я не особо знаком, очень надеюсь на Вашу помощь. (даже если и платно)
p.s Так-же, если Вы знаете, как сделать анимацию этих моделей с помощью .vmd анимаций - отпишите, пожалуйста, и оставьте какой-то способ связаться с Вами.
Я пытаюсь отрендерить pmx модель. Вроде работает, но криво. Сам баг видно на этих скринах:
Screenshot
Screenshot
Все меняется, когда меняю значение в этой строке. GL11.glBegin(2);
Вот так должно быть: Screenshot
С гл я не особо знаком, очень надеюсь на Вашу помощь. (даже если и платно)
p.s Так-же, если Вы знаете, как сделать анимацию этих моделей с помощью .vmd анимаций - отпишите, пожалуйста, и оставьте какой-то способ связаться с Вами.
Java:
try {
if(data==null)data = Reader.read(new File("Izayoi_Sakuya_Ver2.10.pmx"));
XVertex[] vs = data.getVertices();
Face[] fs = data.getFaces();
XMaterial[] ms = data.getMaterials();
GL11.glPushMatrix();
glEnable(GL_TEXTURE_2D);
GL11.glTranslatef(this.width/2, this.height-1, 1);
float scale = 12;
GL11.glScalef(scale, scale, 1);
GL11.glRotatef(180, 1, 0, 0);
GL11.glRotatef(System.currentTimeMillis()/10%360, 0, 1, 0);
GL11.glColor4f(1, 1, 1, 1);
glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(770, 771);
for (int i = 0, v = 0; i < ms.length; i++) {
XMaterial m = ms[i];
GL11.glPushMatrix();
int id = 0;
if(!map.containsKey(data.getTextures()[m.getTexture()])) {
String form = data.getTextures()[m.getTexture()].endsWith(".png") ? "PNG" : "BMP";
Texture t2 = TextureLoader.getTexture(form, new FileInputStream("Izayoi_Sakuya_Ver2.10/"+data.getTextures()[m.getTexture()]));
id = t2.getTextureID();
map.put(data.getTextures()[m.getTexture()], id);
} else {
id = map.get(data.getTextures()[m.getTexture()]);
}
glBindTexture(GL_TEXTURE_2D, id);
for (int j = 0; j < m.getBoundFace() / 3; j++, v++) {
GL11.glBegin(2);
Face f = fs[v];
GL11.glTexCoord2f(vs[(int) f.getV1()].getU(), vs[(int) f.getV1()].getV());
GL11.glVertex3d(vs[(int) f.getV1()].getX(), vs[(int) f.getV1()].getY(),vs[(int) f.getV1()].getZ());
GL11.glTexCoord2f(vs[(int) f.getV2()].getU(), vs[(int) f.getV2()].getV());
GL11.glVertex3d(vs[(int) f.getV2()].getX(), vs[(int) f.getV2()].getY(),vs[(int) f.getV2()].getZ());
GL11.glTexCoord2f(vs[(int) f.getV3()].getU(), vs[(int) f.getV3()].getV());
GL11.glVertex3d(vs[(int) f.getV3()].getX(), vs[(int) f.getV3()].getY(),vs[(int) f.getV3()].getZ());
GL11.glEnd();
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
} catch(Exception ex) {
ex.printStackTrace();
}
Последнее редактирование: