Android OpenGL_ES2.0 LookAt 我的眼睛在哪里?

LibGDX与Java3D结合开发3D游戏:从环境搭建到性能优化 在游戏开发领域,3D图形渲染是构建沉浸式虚拟世界的核心技术。其原理基于图形管线,通过顶点处理、光栅化、片元着色等步骤,将三维模型数据转换为屏幕上的二维像素。这项技术的核心价值在于能够高效、逼真地模拟真实世界或创造奇幻场景,广泛应用于游戏、仿真、虚拟现实等领域。要实现高质量的3D渲染,开发者需要掌握底层图形API(如OpenGL)或使用高级框架进行封装。其中,LibGDX作为一个成熟的Java游戏开发框架,提供了跨平台支持与完整的游戏开发生命周期管理。而结合Java生态中的3D图形编程能力(如通过LWJGL调 阅读详情
public static void setLookAtM(float[] rm, int rmOffset,
float eyeX, float eyeY, float eyeZ,
float centerX, float centerY, float centerZ, float upX, float upY,
float upZ) {}
// Position the eye behind the origin.
final float eyeX = 0.0f;
final float eyeY = 0.0f;
final float eyeZ = 1.5f;

// We are looking toward the distance
final float lookX = 0.0f;
final float lookY = 0.0f;
final float lookZ = -5.0f;

// Set our up vector. This is where our head would be pointing were we holding the camera.
final float upX = 0.0f;
final float upY = 1.0f;
final float upZ = 0.0f;

// Set the view matrix. This matrix can be said to represent the camera position.
// NOTE: In OpenGL 1, a ModelView matrix is used, which is a combination of a model and
// view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);


float[] mViewMatrix = new float[16];
Matrix.setLookAtM将计算结果保存到以上数组,将和Frustum视野一起使用

eyeX eyeY eyeZ表示眼睛或摄像机所在的空间位置

lookX lookY lookZ 表示焦点位置,表示眼睛要看哪里

upX upY upZ表示眼睛的方向

可以想象一个人站立在哪里,右手方向为x,头顶方向为y,后背方向为z.....upX,upY,upZ表示脑袋的方向(只表示方向,无关具体值)
1.如果一个人站立:那么upX=0,upY=1,upZ=0;(此时视野方向其实是正前方)
2.如果直接向后躺下:那么upX=0,upY=0,upZ=1;(此时脑袋在z方向上,此时视野方向在正上方)
3.如果朝着右手边平躺:那么upX=1,upY=0,upZ=0;(此时闹到在x方向上,视野方向仍然是正上方,只是和第2中情况看到的物体的角度不同而已)


眼睛位置+视野方向+视野范围=渲染出的效果


配上《Android 3D游戏开发技术宝典》一书中的示例图:








【数字孪生工业应用实战】第6篇:数字孪生可视化:从WebGL到UE5,打造高性能工业交互界面——一万字实战拆解 本文深入剖析了工业数字孪生系统中可视化界面的构建技术,聚焦WebGL/Three.js与Unreal Engine 5两条主流路线,从真实踩坑经验出发,涵盖技术选型逻辑(监控类选Three.js、体验类选UE5)、四大必会交互功能(第一人称漫游、设备拆解动画、数据面板叠加、多视角切换)及渲染优化策略。通过一个完整的风力发电机案例,提供可直接复用的代码,帮助读者解决海量模型加载、实时数据驱动、多端部署等核心痛点,快速搭建高性能工业3D可视化原型。 阅读详情

相关推荐

Unity音游开发实战:3D小球节拍跳动与音乐同步实现

从音游开发的基础概念切入,探讨Unity中音乐与游戏逻辑同步的核心原理。文章围绕音频播放调度、节拍检测和物理弹跳等关键技术展开,介绍如何使用AudioSource.PlayScheduled与AudioSettings.dspTime实现精确的时间轴控制,通过GetSpectrumData分析低频能量识别节拍,并调整Rigidbody物理参数获得流畅的跳跃手感。同时涵盖对象池、状态机、移动端适配与性能优化等工程实践,适合想要入门Unity并制作节奏类游戏的开发者参考。

weixin_29847829的博客 310

对Android的Opengl ES 中setLookAtM函数的一点理解

这几天在搜狐实习,参与一个VR项目。工作需要,研究了下Android平台下的OpenGl的用法。 有一个Matrix类中的setLookAt的函数有一天让我特别困惑。函数形式如下: public static void setLookAtM(float[] rm, int rmOffset, float eyeX, float eyeY, float eyeZ,

qq_28615177的博客 2004

OpenglES lookat,perspective and Ortho

自己封装的glulookat,gluperspective and gluOrtho,可以在任何平台使用

LearnOpenGL07——摄像机

转自 https://blog.csdn.net/qq_36696486/article/details/104291630 https://learnopengl-cn.github.io/01%20Getting%20started/09%20Camera/#_3 前面的教程中我们讨论了观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点)。OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动

白小飞 590

Android:Google三方库之Adjust集成详细步骤

Android为APP添加google adjust功能

学习就是我的个性 4477

EU 2021/646 eCall工程拆解:MSD、测试模式与型式核准

紧急呼叫系统(eCall)是车载通信中面向事故救援的安全功能,其原理是在碰撞或人工触发后,通过蜂窝网络向公共安全应答点发送最小数据集(MSD),并建立语音链路。技术价值在于缩短救援响应时间、提升事故后生存率,应用场景覆盖乘用车、轻型商用车及车载T-Box等前装通信模块。面向欧盟市场时,EU 2021/646把eCall从安装要求推进到型式核准测试,关注触发链路、备用电源、GNSS定位、MSD字段、音频质量与回拨能力。工程落地需要围绕测试模式、字段校验、配置管理和送检样件建立可交付合规方案。

weixin_31815843的博客 210

[OpenGL]推导LookAt函数定义的视图矩阵

lookat参数中的pos和target定义视图坐标系的z轴,z轴方向是pos-target,这是因为视图坐标系是右手坐标系,z轴方向指向观察者。旋转矩阵的每一行代表视图坐标的坐标轴在世界坐标系下的坐标。右上角的1x3矩阵,代表视图坐标原地在世界坐标系下坐标,但是乘了一个旋转矩阵还进行了取反。其实所谓的视图矩阵,就是一个坐标系与坐标系之间的转换矩阵。视图矩阵将世界坐标系下的坐标转换到了视图坐标系下。(都是向量), 视图坐标系的原点在世界坐标系下的坐标为。, 在世界坐标下和视图坐标下的坐标分别表示。

qq_43331089的博客 892

Keil MDK 5.37及之后版本 安装AC5(ARMCC)编译器详细步骤

由于Keil 5.37及之后版本不再默认安装AC5(ARMCC)编译器,这就会导致由AC5编译的工程无法正常编译,往往输出窗口会提示以下信息:*** Target ‘STM32xxxx‘ uses ARM-Compiler ‘Default Compiler Version 5‘ which is not available.

s_Modesto的博客 1万+

OpenGL LookAt函数理解

前言:记录OpenGL学习过程中的一些知识点,以个人理解为主。 LookAt函数将顶点的世界空间坐标转换为观察空间坐标,实际上是以相机为原点重新定义的三维空间。 glm::mat4 LookAt(glm::vec3 pos, glm::vec3 target, glm::vec3 up) 函数接受三个参数,相机位置pos,目标位置target以及相机上向量up。工作流程是:glm::vec3 zaxis = normalize(pos-target)指向观察空间正Z轴方向,glm::vec3 xax

诗酒年华 7670

SAP 凭证分割功能 - 概述&系统配置 - Chapter01/02

为何要进行凭证拆分(分割)?在启用凭证分割之前, 在财务凭证在过账时会自动带出默认的利润中心,这利 润中心一般是从其他对象派生出来的(比如从成本中心、WBS 或资产负债表科 目定义默认的利润中心等),但是某些情况下的财务过账是不会派生出利润中 心的,比如说应收或者应付。如果一笔销售凭证上有两个行项目,10 行对应的成品物料 A 的利润中心为 TPCA-100;公司项目Dr/Cr科目金额利润中心10001Dr应收账款20002Cr库存商品A1500TPCA-1003Cr。

weixin_46525734的博客 3972

LilyPad三色LED共阳极控制:从原理到Arduino编程实战

RGB LED作为可编程光源的核心组件,通过红、绿、蓝三原色的加色混合原理,能够生成丰富的色彩。其内部结构主要分为共阳极和共阴极两种类型,这决定了驱动电路的设计和编程逻辑。在电子织物和可穿戴设备领域,掌握RGB LED的控制技术对于实现动态光效和交互反馈至关重要。本文以LilyPad三色LED为例,深入解析其共阳极特性,并详细演示如何结合Arduino进行PWM编程,从而精准控制颜色与亮度,为智能服装、互动艺术装置等项目提供可靠的照明解决方案。

weixin_30237719的博客 615

Android OpenGLES3.0 开发 :光照基础

散射光表示从物体表面向各个方向均匀反射的光。散射光的强度与入射光的强度及入射角密切相关,所以当光源位置发生变化,散射光效果也会发生明显变化。镜面光是由光滑物体表面反射的方向比较集中的光,镜面光强度不仅依赖于入射光与法向量的夹角,也依赖于观察者的位置。片元着色器:将顶点着色器计算的光线直接跟采样器得到的颜色相乘得到了最终的颜色。将MVP矩阵、模型矩阵、光的位置、光的颜色与观察者的位置传给shader。顶点着色器根据传入的光的数据以及位置信息计算光线的强度,注释写的比较清楚。

风的轨迹 1220

【PCIe 总线及设备入门学习专栏 6.1 -- PCIe MCTP】

MCTP 是由 DMTF(Distributed Management Task Force)定义的协议,用于提供设备和主机间基于不同传输层(如 PCIe、I²C、USB 等)的管理消息通信能力。在 PCIe 环境下,MCTP 消息作为的一种特殊形式传输,并被赋予唯一的 VDM Code 值0000b,以区别于其他 VDM。MCTP 在 PCIe 环境中作为一种基于 Type 1 VDM 的管理通信协议,提供了设备与主机之间的灵活数据传输能力。

CodingCos的博客 2130

Android openGL ES2.0 Matrix.frustumM和Matrix.setLookAtM解析

Android使用OpenGL ES2.0绘制3D图像或者加载3D模型时,为了达到立体效果往往需要设置视见转换矩阵和投影转换矩阵即Matrix.setLookAtM(mVMatrix, 0, cx, cy, cz, tx, ty, tz, upx, upy, upz) 和 Matrix.frustumM(mProjMatrix, 0, left, right, bottom, top, near,

Lixby的博客 560

华为OD机试 - 单词倒序(Python/JS/C/C++ 2025 A卷 100分)

华为OD机试 2025A卷题库疯狂收录中,刷题。

学Java,找哪吒 1226

图神经网络实战(1)——图神经网络(Graph Neural Networks, GNN)基础

本节全面介绍了图神经网络 (Graph Neural Network, GNN) ,包括其在数据分析和机器学习中的重要性。首先探讨了图作为数据表示的相关概念及其在各个领域的广泛应用;然后深入探讨图学习的重要性,包括不同的应用和技术。最后,重点介绍了 GNN 架构,并对比了它与其他方法之间的原理和性能差异。

盼小辉丶的博客 15万+

Opengl---gluLookAt函数详解

下面的一段摘自百度百科: 视点转换 函数原型 void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble centery,GLdouble centerz,GLdouble upx,GLdouble upy,GLdouble upz); 该函数定义一个视图矩阵,并与当前矩阵相乘。 第

IvanLJF的专栏 10万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android OpenGL ES2.0 setLookAtM()方法

setLookAtM()方法解析 方法如下所示: void setLookAtM (float[] rm , int rmOffset ,float eyeX , float eyeY , float eyeZ , float centerX, float centerY , float centerZ , float upX , float upY , float upZ ) 在世界坐标

lyzirving的博客 3120

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

实现opengl 中gluLookAt函数

opengl Distilled 中介绍了view 坐标转换的原理,先列一下原著中的介绍: The view transformation transforms vertices into eye coordinates and is the inverse of atransformation to place and orient the viewer in world coordinate

liuzhidejll的专栏 4737

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

OpenGL——摄像机+LookAt矩阵+视角移动

glm::Lookat

whl0071的专栏 1758

在OpenGL中使用gluLookAt实现漫游

一般情况下实现第一人称视角游戏有两种方法,一是移动场景,二是移动眼坐标.移动场景方法比较简单,使用glTranslatef与glRotatef配合即可,但一般只在简单场景和单角色的情况下使用,而且角色的各种计算(如实时坐标、碰撞)不好实现,所以不推荐使用;移动眼坐标的方法就非常灵活,它对场景和角色的状态未做任何操作,一般只要设置成跟随主角色移动旋转即可实现第一人称视角视觉效果.void AirRo

2595

OpenGL之gluLookAt()函数

利用实用库函数gluLookAt()设置视觉坐标系。在实际的编程应用中,用户在完成场景的建模后,往往需要选择一个合适的视角或者不停地变换视角,以对场景作观察。实用库函数gluLookAt()就提供了这样的一个功能。 void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdouble centerx,GLdouble

linghu_java的专栏 2227

OPENGL ES学习摘要

这个我倒是有查到,0x10000是出于OPENGL前期内存节约的考虑,以INT型模拟FLOAT型来表示,0x 0001 0000 前面4位表示小数点前,后4位表示小数点后,所以0x10000表示浮点数的1。如果你用的是FloatBuffer,就可以知道此处应该写1.0。         gl.glRotatef(-angle, 0, 0, 1);           // Move s

coding for life 1030

OpenGL es gluLookAt 函数

OpenGL es 没有gluLookAt 函数,从外网找了一个 附链接 gluLookAt函数 为了方便不会墙的同志,附代码 已调试使用,正常! object c 和 c++混编的同志在使用时删掉以下两个头文件,加入cmath头文件#import #import Somebody asked me for an implementation of gluLookAt() fo

layject的专栏 1828

gluPerspective and gluLookAt 在OpenGL-ES中的替代

gluPerspective and gluLookAt 在OpenGL-ES中的替代

iversonyang的专栏 2918

关于OpenGL ES 2.0中 相机视觉,也就是Matrix.setLookAtM()参数的详细解说

关于OpenGL ES 2.0中 相机视觉,也就是Matrix.setLookAtM()参数的详细解说

a7178077的专栏 1万+
上一篇: Android OpenGL_ES2.0 Frustum 我能看见哪些地方?
下一篇: Android OpenGL_ES2.0 理解矩阵Matrix
fz_dev
博客等级 码龄10年 0粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值