用JOGL做简单的3D场景

这篇博客介绍了如何利用JOGL库在Java中构建一个简单的3D场景,包括右手坐标系的选择、绘制3D房屋和平面,并通过GLEventListener接口实现。内容涉及深度测试、投影类型(透视和正交)、相机位置与视角调整,以及键盘监听来控制视角变化。
摘要由CSDN通过智能技术生成

用JOGL做简单的3D场景

制作3D场景先确定xyz坐标系,本文用的是右手原则的坐标系,如图
在这里插入图片描述
然后确定好自己要画的物体在该坐标系中对应的坐标就可以开始了;本文画的是非常简单的房子。

实现

继承GLEventListener,实现它的4个接口
首先画一个地板,在display(GLAutoDrawable drawable)中用4个glVertex3f()来构建一个平面,参数分别对应x, y, z

		//drawfloor
		gl.glBegin(GL2.GL_QUADS);
		gl.glColor3f(0.35f, 0.16f, 0.14f);
		gl.glVertex3f(-100.0f, -1.0f, -100.0f);
		gl.glVertex3f(-100.0f, -1.0f, 100.0f);
		gl.glVertex3f(100.0f, -1.0f, 100.0f);
		gl.glVertex3f(100.0f, -1.0f, -100.0f);

注意:因为OpenGL是C++的库,所以用JAVA写的时候需要导入的是JOGL,而且需要加上GL2 gl = drawable.getGL().getGL2();才能使用OpenGL的各个方法
然后用相同的方法画房子主体和屋顶,因为需要改变的只有各个点的坐标,所以就只放实现房顶正面的代码(和画地板是一样的)
画图的方法有很多,网上都能找到,注意:在每次画完一个图形之后,如果需要用glTranslatef()移动或者glBegin()画一个新的图形,需要添加gl.glLoadIdentity();

		//roof front
		gl.glColor3f(1.0f, 0.0f, 0.0f); //
		gl.glVertex3f( 2.0f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值