摘要:
1 简介 2D动画、人体模型及动画、人物跟随鼠标位置中介绍了 Aniamtion、Animator、人体模型、人体骨骼、人体动画等基础知识及人体动画的应用,本文将进一步介绍动画混合。 实现动画混合有混合树(Blend Tree)和动画图层(Layers)两种方式: 混合树:将多个动画片段以位 阅读全文
1 简介 2D动画、人体模型及动画、人物跟随鼠标位置中介绍了 Aniamtion、Animator、人体模型、人体骨骼、人体动画等基础知识及人体动画的应用,本文将进一步介绍动画混合。 实现动画混合有混合树(Blend Tree)和动画图层(Layers)两种方式: 混合树:将多个动画片段以位 阅读全文
posted @ 2023-03-20 21:33
little_fat_sheep
阅读(511)
评论(0)
推荐(0)
摘要:
1 动画回调函数 动画回调函数是指动画在开始时、执行中、结束时回调的函数,主要有:OnStateEnter、OnStateUpdate、OnStateExit、OnStateMove、OnStateIK。 1)动画状态判断 Animator animator = GetComponent<A 阅读全文
1 动画回调函数 动画回调函数是指动画在开始时、执行中、结束时回调的函数,主要有:OnStateEnter、OnStateUpdate、OnStateExit、OnStateMove、OnStateIK。 1)动画状态判断 Animator animator = GetComponent<A 阅读全文
posted @ 2023-03-20 21:08
little_fat_sheep
阅读(556)
评论(0)
推荐(0)
摘要:
1 简介 1)AudioSource 与 AudioListener 简介 AudioSource(音频源)组件用于控制播放 AudioClip(音频片段),能够控制 2D 和 3D(距离越远,声音越小)声音播放,它一般挂在产生声源的游戏对象上。 AudioListener (音频监听器 阅读全文
1 简介 1)AudioSource 与 AudioListener 简介 AudioSource(音频源)组件用于控制播放 AudioClip(音频片段),能够控制 2D 和 3D(距离越远,声音越小)声音播放,它一般挂在产生声源的游戏对象上。 AudioListener (音频监听器 阅读全文
posted @ 2023-03-20 21:01
little_fat_sheep
阅读(412)
评论(0)
推荐(0)
摘要:
1 游戏对象 2D动画和人体模型及动画中介绍了 Aniamtion、Animator、人体模型、人体骨骼、人体动画等基础知识,本文将通过 “人物跟随鼠标位置” 案例加强对 Unity3D 动画的理解。 1)游戏界面 2)游戏对象 由于 Unity3D 官方人体模型(Ethan)皮肤是 阅读全文
1 游戏对象 2D动画和人体模型及动画中介绍了 Aniamtion、Animator、人体模型、人体骨骼、人体动画等基础知识,本文将通过 “人物跟随鼠标位置” 案例加强对 Unity3D 动画的理解。 1)游戏界面 2)游戏对象 由于 Unity3D 官方人体模型(Ethan)皮肤是 阅读全文
posted @ 2023-03-20 20:58
little_fat_sheep
阅读(396)
评论(0)
推荐(0)
摘要:
1 前言 2D动画 中初步了解了 Animation 和 Animator,本文将进一步学习 3D 动画,并介绍 人体模型相关内容。 模型制作软件主要有:3DMax、Maya,模型存储格式主要有:.max、.fbx、.obj,动画存储格式:.fbx,Unity3D 只支持 fbx 格式。 阅读全文
1 前言 2D动画 中初步了解了 Animation 和 Animator,本文将进一步学习 3D 动画,并介绍 人体模型相关内容。 模型制作软件主要有:3DMax、Maya,模型存储格式主要有:.max、.fbx、.obj,动画存储格式:.fbx,Unity3D 只支持 fbx 格式。 阅读全文
posted @ 2023-03-20 20:57
little_fat_sheep
阅读(1395)
评论(0)
推荐(0)
摘要:
1 图片处理 通过 PS 软件将以下 gif 文件中的黑色背景删除,并将其中的 18 个图层分别保存为 png 格式图片。 2 游戏对象 1)游戏对象层级结构 2)Transform组件参数 | Name | Type | Position | Rotation | Scale | Co 阅读全文
1 图片处理 通过 PS 软件将以下 gif 文件中的黑色背景删除,并将其中的 18 个图层分别保存为 png 格式图片。 2 游戏对象 1)游戏对象层级结构 2)Transform组件参数 | Name | Type | Position | Rotation | Scale | Co 阅读全文
posted @ 2023-03-20 20:55
little_fat_sheep
阅读(361)
评论(0)
推荐(0)
摘要:
1 前言 1)场景切换 场景切换可以使用 SceneManager 的 LoadScene 和 LoadSceneAsync 方法,如下: public static void LoadScene(string sceneName) public static void LoadScene( 阅读全文
1 前言 1)场景切换 场景切换可以使用 SceneManager 的 LoadScene 和 LoadSceneAsync 方法,如下: public static void LoadScene(string sceneName) public static void LoadScene( 阅读全文
posted @ 2023-03-20 20:54
little_fat_sheep
阅读(1134)
评论(0)
推荐(0)
摘要:
1 简介 相机用于渲染游戏对象,每个场景中可以有多个相机,每个相机独立成像,每个成像都是一个图层,最后渲染的图层在最前面显示。 相机的属性面板如下: Clear Flags:设置清屏颜色,Skybox(天空盒)、Solid Color(纯色)、Depth Only(仅深度,画中画效果)、Do 阅读全文
1 简介 相机用于渲染游戏对象,每个场景中可以有多个相机,每个相机独立成像,每个成像都是一个图层,最后渲染的图层在最前面显示。 相机的属性面板如下: Clear Flags:设置清屏颜色,Skybox(天空盒)、Solid Color(纯色)、Depth Only(仅深度,画中画效果)、Do 阅读全文
posted @ 2023-03-20 20:54
little_fat_sheep
阅读(277)
评论(0)
推荐(0)
摘要:
1 需求实现 项目代码见→坦克大战1.1.0 1)人机交互 玩家通过 ↑ ↓ ← → 键(或 W、S、A、D)键控制己方坦克平移; 玩家通过滑动鼠标右键控制己方坦克左右旋转; 玩家通过鼠标左键(或空格键)控制己方坦克发射炮弹; 玩家通过 ESC 键控制窗口全屏和恢复; 玩家通过 Q 键控制退 阅读全文
1 需求实现 项目代码见→坦克大战1.1.0 1)人机交互 玩家通过 ↑ ↓ ← → 键(或 W、S、A、D)键控制己方坦克平移; 玩家通过滑动鼠标右键控制己方坦克左右旋转; 玩家通过鼠标左键(或空格键)控制己方坦克发射炮弹; 玩家通过 ESC 键控制窗口全屏和恢复; 玩家通过 Q 键控制退 阅读全文
posted @ 2023-03-20 20:54
little_fat_sheep
阅读(511)
评论(0)
推荐(0)
摘要:
1 简介 控制角色移动的组件主要有:Transform 组件、Rigidbody 组件、CharacterController 组件。Transform 组件通过控制角色位置实现移动,Rogidbody 组件通过控制角色速度实现移动,CharacterController 组件通过控制角色速度和 阅读全文
1 简介 控制角色移动的组件主要有:Transform 组件、Rigidbody 组件、CharacterController 组件。Transform 组件通过控制角色位置实现移动,Rogidbody 组件通过控制角色速度实现移动,CharacterController 组件通过控制角色速度和 阅读全文
posted @ 2023-03-20 20:52
little_fat_sheep
阅读(836)
评论(0)
推荐(0)
摘要:
1 需求实现 人机交互Input 中实现了通过键盘控制坦克运动,通过鼠标控制坦克发射炮弹,本文将在此基础上,增加血条(HP)功能。炮弹命中后,HP 值会减少,因此需要应用到 刚体组件Rigidbody 和 碰撞体组件Collider;从不同角度攻击敌人时,敌人的血条始终朝向相机,因此需要用到 相 阅读全文
1 需求实现 人机交互Input 中实现了通过键盘控制坦克运动,通过鼠标控制坦克发射炮弹,本文将在此基础上,增加血条(HP)功能。炮弹命中后,HP 值会减少,因此需要应用到 刚体组件Rigidbody 和 碰撞体组件Collider;从不同角度攻击敌人时,敌人的血条始终朝向相机,因此需要用到 相 阅读全文
posted @ 2023-03-20 20:52
little_fat_sheep
阅读(663)
评论(0)
推荐(0)
摘要:
1 需求实现 1)需求实现 鼠标拖拽摇杆球控制坦克移动; 上下左右按键也可以控制坦克移动,并且摇杆球也同步移动; 鼠标右键滑动,控制坦克转向; 相机在玩家后上方的位置,始终跟随玩家,朝玩家正前方看; 单击鼠标左键或按空格键控制坦克发射炮弹。 2)涉及技术栈 Transform组件 人机交互I 阅读全文
1 需求实现 1)需求实现 鼠标拖拽摇杆球控制坦克移动; 上下左右按键也可以控制坦克移动,并且摇杆球也同步移动; 鼠标右键滑动,控制坦克转向; 相机在玩家后上方的位置,始终跟随玩家,朝玩家正前方看; 单击鼠标左键或按空格键控制坦克发射炮弹。 2)涉及技术栈 Transform组件 人机交互I 阅读全文
posted @ 2023-03-20 20:52
little_fat_sheep
阅读(400)
评论(0)
推荐(0)
摘要:
1 简述 UGUI 回调函数主要指鼠标进入、离开、点下、点击中、抬起、开始拖拽、拖拽中、拖拽结束 UI 控件触发的回调。使用 UGUI 回调函数时,需要引入 UnityEngine.EventSystems 命名空间。 1) 回调函数 | 回调函数 | 接口 | 说明 | | | | | | 阅读全文
1 简述 UGUI 回调函数主要指鼠标进入、离开、点下、点击中、抬起、开始拖拽、拖拽中、拖拽结束 UI 控件触发的回调。使用 UGUI 回调函数时,需要引入 UnityEngine.EventSystems 命名空间。 1) 回调函数 | 回调函数 | 接口 | 说明 | | | | | | 阅读全文
posted @ 2023-03-20 20:52
little_fat_sheep
阅读(354)
评论(0)
推荐(0)
摘要:
1 概述 布局组件主要有:水平布局(HorizontalLayoutGroup)、垂直布局(VerticalLayoutGroup)、网格布局(GridLayoutGroup),用于约束子控件的布局方式,这些布局都有以下共同属性: Padding:边距,父控件向内收缩的空间,子控件只能在此收缩空 阅读全文
1 概述 布局组件主要有:水平布局(HorizontalLayoutGroup)、垂直布局(VerticalLayoutGroup)、网格布局(GridLayoutGroup),用于约束子控件的布局方式,这些布局都有以下共同属性: Padding:边距,父控件向内收缩的空间,子控件只能在此收缩空 阅读全文
posted @ 2023-03-20 20:51
little_fat_sheep
阅读(305)
评论(0)
推荐(0)
摘要:
1 InputField 属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 InputField(输入框)控件,即可创建 InputField 控件,选中创建的 InputField 控件,按键盘【T】键,可以调整 InputField 控件的大小和位置。 创建 InputF 阅读全文
1 InputField 属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 InputField(输入框)控件,即可创建 InputField 控件,选中创建的 InputField 控件,按键盘【T】键,可以调整 InputField 控件的大小和位置。 创建 InputF 阅读全文
posted @ 2023-03-20 20:50
little_fat_sheep
阅读(456)
评论(0)
推荐(0)
摘要:
1 Slider属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Slider 控件,即可创建 Slider 控件,选中创建的 Slider 控件,按键盘【T】键,可以调整 Slider 控件的大小和位置。 创建 Slider 控件时,系统会自动为其创建 3 个 Image 阅读全文
1 Slider属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Slider 控件,即可创建 Slider 控件,选中创建的 Slider 控件,按键盘【T】键,可以调整 Slider 控件的大小和位置。 创建 Slider 控件时,系统会自动为其创建 3 个 Image 阅读全文
posted @ 2023-03-20 20:50
little_fat_sheep
阅读(449)
评论(0)
推荐(0)
摘要:
1 Toggle属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Toggle 控件,即可创建 Toggle 控件,选中创建的 Toggle 控件,按键盘【T】键,可以调整 Toggle 控件的大小和位置。 创建 Toggle 控件时,系统会自动为其创建 2 个 Image 阅读全文
1 Toggle属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Toggle 控件,即可创建 Toggle 控件,选中创建的 Toggle 控件,按键盘【T】键,可以调整 Toggle 控件的大小和位置。 创建 Toggle 控件时,系统会自动为其创建 2 个 Image 阅读全文
posted @ 2023-03-20 20:50
little_fat_sheep
阅读(630)
评论(0)
推荐(0)
摘要:
1 Dropdown属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Dwondown (下拉列表)控件,即可创建 Dwondown 控件,选中创建的 Dwondown 控件,按键盘【T】键,可以调整 Dwondown 控件的大小和位置。 创建 Dwondown 控件时,系统 阅读全文
1 Dropdown属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Dwondown (下拉列表)控件,即可创建 Dwondown 控件,选中创建的 Dwondown 控件,按键盘【T】键,可以调整 Dwondown 控件的大小和位置。 创建 Dwondown 控件时,系统 阅读全文
posted @ 2023-03-20 20:50
little_fat_sheep
阅读(499)
评论(0)
推荐(0)
摘要:
1 纹理(Texture) Image 控件和 RawImage 控件都是承载渲染图片的控件,都需要指定一个纹理(Texture)图片。在 Assets 窗口选中一张图片,在 Inspector 窗口的参数设置面板可以查看和编辑图片属性。图片属性中最重要的是图片类型(Texture Type), 阅读全文
1 纹理(Texture) Image 控件和 RawImage 控件都是承载渲染图片的控件,都需要指定一个纹理(Texture)图片。在 Assets 窗口选中一张图片,在 Inspector 窗口的参数设置面板可以查看和编辑图片属性。图片属性中最重要的是图片类型(Texture Type), 阅读全文
posted @ 2023-03-20 20:49
little_fat_sheep
阅读(490)
评论(0)
推荐(0)
摘要:
1 Button属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Button 控件,即可创建 Button 控件,选中创建的 Button 控件,按键盘【T】键,可以调整 Button 控件的大小和位置。创建 Button 控件时,系统会自动给其创建一个 Text 子控件,用于 阅读全文
1 Button属性面板 在 Hierarchy 窗口右键,选择 UI 列表里的 Button 控件,即可创建 Button 控件,选中创建的 Button 控件,按键盘【T】键,可以调整 Button 控件的大小和位置。创建 Button 控件时,系统会自动给其创建一个 Text 子控件,用于 阅读全文
posted @ 2023-03-20 20:49
little_fat_sheep
阅读(429)
评论(0)
推荐(0)
摘要:
1 Text 简介 UGUI概述 中介绍了Canvas 渲染模式、RectTransform 组件、锚点(Anchor)等,本文将介绍 UGUI 中的 Text 控件。 在 Hierarchy 窗口右键,选择 UI 列表里的 Text 控件,即可创建 Text 控件,选中创建的 Text 控 阅读全文
1 Text 简介 UGUI概述 中介绍了Canvas 渲染模式、RectTransform 组件、锚点(Anchor)等,本文将介绍 UGUI 中的 Text 控件。 在 Hierarchy 窗口右键,选择 UI 列表里的 Text 控件,即可创建 Text 控件,选中创建的 Text 控 阅读全文
posted @ 2023-03-20 20:48
little_fat_sheep
阅读(355)
评论(0)
推荐(0)
摘要:
1 UGUI 与 GUI 区别 GUI控件 在编译时不能可视化,并且界面不太美观,在实际应用中使用的较少。UGUI 在编译时可视化,界面美观,实际应用较广泛。 2 Canvas 渲染模式(Render Mode) Screen Space - Overlay:画布自动适应屏幕尺寸,不能调整 Re 阅读全文
1 UGUI 与 GUI 区别 GUI控件 在编译时不能可视化,并且界面不太美观,在实际应用中使用的较少。UGUI 在编译时可视化,界面美观,实际应用较广泛。 2 Canvas 渲染模式(Render Mode) Screen Space - Overlay:画布自动适应屏幕尺寸,不能调整 Re 阅读全文
posted @ 2023-03-20 20:48
little_fat_sheep
阅读(497)
评论(0)
推荐(0)
摘要:
1 前言 相机跟随是相机指始终跟随特定游戏对象,有以下 2 种跟随效果: 位置跟随:相机指向目标游戏对象的向量始终不变 位置和姿态跟随:相机在目标游戏对象的坐标系下的坐标和朝向始终不变 实现相机位置和姿态跟随最简单的方法是:将相机游戏对象拖拽到目标游戏对象下,即相机作为目标游戏对象的子对象, 阅读全文
1 前言 相机跟随是相机指始终跟随特定游戏对象,有以下 2 种跟随效果: 位置跟随:相机指向目标游戏对象的向量始终不变 位置和姿态跟随:相机在目标游戏对象的坐标系下的坐标和朝向始终不变 实现相机位置和姿态跟随最简单的方法是:将相机游戏对象拖拽到目标游戏对象下,即相机作为目标游戏对象的子对象, 阅读全文
posted @ 2023-03-20 20:47
little_fat_sheep
阅读(175)
评论(2)
推荐(0)
摘要:
1 前言 Unity 3D 提供了 GUI、NGUI、UGUI 等图形系统,以增强玩家与游戏的交互性。GUI 在编译时不能可视化,在运行时才能可视化。GUI 代码需要在 OnGUI 函数中调用才能绘制,布局分为手动布局(GUI)和自动布局(GUILayout)。 手动布局:需要传人Rect 参数 阅读全文
posted @ 2023-03-20 20:47
little_fat_sheep
阅读(678)
评论(0)
推荐(1)
摘要:
1 前言 碰撞体组件Collider 中介绍了 2 个碰撞体之间的碰撞检测,本文将介绍物理射线与碰撞体之间的碰撞检测。物理射线由 Ray 定义,通过 Physics.Raycast / Physics.RaycastAll 发射射线,返回 RaycastHit 碰撞检测信息。 射线仅用于检测 阅读全文
1 前言 碰撞体组件Collider 中介绍了 2 个碰撞体之间的碰撞检测,本文将介绍物理射线与碰撞体之间的碰撞检测。物理射线由 Ray 定义,通过 Physics.Raycast / Physics.RaycastAll 发射射线,返回 RaycastHit 碰撞检测信息。 射线仅用于检测 阅读全文
posted @ 2023-03-20 20:46
little_fat_sheep
阅读(793)
评论(0)
推荐(0)
摘要:
1 前言 Unity3D 中碰撞体(Collider)组件用于检测运动的物体之间是否发生碰撞,也可以作为触发器使用。产生碰撞的条件是: 2 个游戏对象都有 Collider 至少有一个游戏对象有 Rigidbody 2 个游戏对象保持相对运动(一个 Cube 放在 Plane 上,不会产生碰撞, 阅读全文
1 前言 Unity3D 中碰撞体(Collider)组件用于检测运动的物体之间是否发生碰撞,也可以作为触发器使用。产生碰撞的条件是: 2 个游戏对象都有 Collider 至少有一个游戏对象有 Rigidbody 2 个游戏对象保持相对运动(一个 Cube 放在 Plane 上,不会产生碰撞, 阅读全文
posted @ 2023-03-20 20:46
little_fat_sheep
阅读(479)
评论(0)
推荐(0)
摘要:
1 前言 刚体(Rigidbody)是运动学(Kinematic)中的一个概念,指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。在 Unity3D 中,刚体组件赋予了游戏对象一些运动学上的属性,主要包括 Mass(质量)、Drag(阻力)、Angular Drag(角阻 阅读全文
1 前言 刚体(Rigidbody)是运动学(Kinematic)中的一个概念,指在运动中和受力作用后,形状和大小不变,而且内部各点的相对位置不变的物体。在 Unity3D 中,刚体组件赋予了游戏对象一些运动学上的属性,主要包括 Mass(质量)、Drag(阻力)、Angular Drag(角阻 阅读全文
posted @ 2023-03-20 20:42
little_fat_sheep
阅读(780)
评论(0)
推荐(0)
摘要:
1 前言 每个游戏对象有且仅有一个 Transform 组件,Transform 组件保存了游戏对象的位置信息,用户可以通过操作 Transform 组件实现对游戏对象的平移、旋转、缩放等变换。每个 Script 组件需要继承 MonoBehaviour,MonoBehaviour 中有 Tra 阅读全文
1 前言 每个游戏对象有且仅有一个 Transform 组件,Transform 组件保存了游戏对象的位置信息,用户可以通过操作 Transform 组件实现对游戏对象的平移、旋转、缩放等变换。每个 Script 组件需要继承 MonoBehaviour,MonoBehaviour 中有 Tra 阅读全文
posted @ 2023-03-20 20:42
little_fat_sheep
阅读(407)
评论(0)
推荐(0)
摘要:
1 前言 Input 是 Unity3D 中用于人机交互的工具类,用户可以调用其 GetKey、GetMousePosition、GetMouseButton、GetAxis、GetButton 等方法获取键盘和鼠标的状态信息,再通过这些状态信息控制游戏对象,从而实现人机交互。 1)键盘输入 阅读全文
1 前言 Input 是 Unity3D 中用于人机交互的工具类,用户可以调用其 GetKey、GetMousePosition、GetMouseButton、GetAxis、GetButton 等方法获取键盘和鼠标的状态信息,再通过这些状态信息控制游戏对象,从而实现人机交互。 1)键盘输入 阅读全文
posted @ 2023-03-20 20:41
little_fat_sheep
阅读(410)
评论(0)
推荐(0)
摘要:
1 前言 Unity3D 中可以给每个游戏对象添加脚本,这些脚本必须继承 MonoBehaviour,用户可以根据需要重写 MonoBehaviour 的部分生命周期函数,这些生命周期函数由系统自动调用,且调用顺序与书写顺序无关。 MonoBehaviour 的继承关系:MonoBehavi 阅读全文
1 前言 Unity3D 中可以给每个游戏对象添加脚本,这些脚本必须继承 MonoBehaviour,用户可以根据需要重写 MonoBehaviour 的部分生命周期函数,这些生命周期函数由系统自动调用,且调用顺序与书写顺序无关。 MonoBehaviour 的继承关系:MonoBehavi 阅读全文
posted @ 2023-03-20 20:41
little_fat_sheep
阅读(699)
评论(0)
推荐(0)
摘要:
1 前言 Terrain 是 Unity3D 提供的用于绘制地形的游戏对象,可以在其上绘制山地、江海、池塘、草树等。 用户可以通过【GameObject → 3D Object → Terrain】新建地形,主要有如下6个功能菜单: Raise / Lower Terrain:升高 / 降低 阅读全文
1 前言 Terrain 是 Unity3D 提供的用于绘制地形的游戏对象,可以在其上绘制山地、江海、池塘、草树等。 用户可以通过【GameObject → 3D Object → Terrain】新建地形,主要有如下6个功能菜单: Raise / Lower Terrain:升高 / 降低 阅读全文
posted @ 2023-03-20 20:40
little_fat_sheep
阅读(1107)
评论(0)
推荐(0)
摘要:
1 单键 Q:扒手拖动(Scene) W:移动(GameObject) E:旋转 R:三维缩放(GameObject 不会变形) T:单维缩放(GameObject 会变形) Y:平移、旋转、缩放 F:将选中的对象放在屏幕中心(双击 GameObject 同效果) Z:游戏对象以本地坐标系中心 / 阅读全文
posted @ 2023-03-20 20:39
little_fat_sheep
阅读(1158)
评论(0)
推荐(0)
摘要:
1 前言 渲染管线是指图形渲染流程,涉及到的概念非常多,主要包含图元、片段、光栅化、空间、变换、裁剪、着色器、片段测试、混合等。渲染管线主体流程如下: 为方便读者理解渲染管线,本文将先介绍顶点数据、图元与片段、空间与变换、着色器等渲染管线基础概念,再介绍渲染管线、片段测试、混合等内容。 2 阅读全文
1 前言 渲染管线是指图形渲染流程,涉及到的概念非常多,主要包含图元、片段、光栅化、空间、变换、裁剪、着色器、片段测试、混合等。渲染管线主体流程如下: 为方便读者理解渲染管线,本文将先介绍顶点数据、图元与片段、空间与变换、着色器等渲染管线基础概念,再介绍渲染管线、片段测试、混合等内容。 2 阅读全文
posted @ 2023-03-20 00:43
little_fat_sheep
阅读(448)
评论(0)
推荐(0)
摘要:
1 前言 Blinn改进的冯氏光照模型 中只展示了光照效果,本文将进一步展示阴影效果。 绘制阴影,需要用到深度纹理,即从光源角度看模型并绘制一张纹理图,纹理图的颜色代表了模型上的点离光源的深度,只有离光源较近的点才会绘制到深度纹理图中,被遮挡的点不会被绘制到深度纹理图中。判断地平面中的点是否 阅读全文
1 前言 Blinn改进的冯氏光照模型 中只展示了光照效果,本文将进一步展示阴影效果。 绘制阴影,需要用到深度纹理,即从光源角度看模型并绘制一张纹理图,纹理图的颜色代表了模型上的点离光源的深度,只有离光源较近的点才会绘制到深度纹理图中,被遮挡的点不会被绘制到深度纹理图中。判断地平面中的点是否 阅读全文
posted @ 2023-03-20 00:41
little_fat_sheep
阅读(454)
评论(0)
推荐(0)
摘要:
1 前言 光照元素主要有环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular),光照模型主要有冯氏模型和 Blinn 改进的冯氏模型,两者区别在与镜面反射光的计算,冯氏模型根据反向量和观察向量计算镜面反射光,Blinn 改进的冯氏模型根据半向量和法向量计算镜面反射光 阅读全文
1 前言 光照元素主要有环境光(ambient)、漫反射光(diffuse)、镜面反射光(specular),光照模型主要有冯氏模型和 Blinn 改进的冯氏模型,两者区别在与镜面反射光的计算,冯氏模型根据反向量和观察向量计算镜面反射光,Blinn 改进的冯氏模型根据半向量和法向量计算镜面反射光 阅读全文
posted @ 2023-03-20 00:40
little_fat_sheep
阅读(363)
评论(0)
推荐(0)
摘要:
1 前言 FBO离屏渲染 中使用 GLSurfaceView 来驱动 Renderer 渲染图片,为了隐藏 GLSurfaceView,将其设置为透明的,并且宽高都设置为1。本文将使用 EGL 代替 GLSurfaceView 生成 OpenGL ES 的渲染环境,实现离屏渲染,将渲染后的图片显 阅读全文
1 前言 FBO离屏渲染 中使用 GLSurfaceView 来驱动 Renderer 渲染图片,为了隐藏 GLSurfaceView,将其设置为透明的,并且宽高都设置为1。本文将使用 EGL 代替 GLSurfaceView 生成 OpenGL ES 的渲染环境,实现离屏渲染,将渲染后的图片显 阅读全文
posted @ 2023-03-20 00:38
little_fat_sheep
阅读(586)
评论(0)
推荐(0)
摘要:
1 前言 OpenGL 默认把 framebuffer 当作渲染目的地,它由窗口系统创建并管理。应用程序也可以创建额外非可显示的 framebuffer object(FBO),以区别窗口系统提供的 framebuffer。OpenGL 应用程序可以重定向渲染目的地,让它输出到 FBO 而不是窗 阅读全文
1 前言 OpenGL 默认把 framebuffer 当作渲染目的地,它由窗口系统创建并管理。应用程序也可以创建额外非可显示的 framebuffer object(FBO),以区别窗口系统提供的 framebuffer。OpenGL 应用程序可以重定向渲染目的地,让它输出到 FBO 而不是窗 阅读全文
posted @ 2023-03-20 00:37
little_fat_sheep
阅读(822)
评论(0)
推荐(0)
摘要:
1 前言 ValueAnimator 基于 Choreographer 的 frame callback 机制,周期性(约16.7ms,与屏幕帧率相关)执行其 doAnimationFrame() 方法,回调监听器中相应方法,刷新 UI 实现动画效果。 ValueAnimator 是 And 阅读全文
1 前言 ValueAnimator 基于 Choreographer 的 frame callback 机制,周期性(约16.7ms,与屏幕帧率相关)执行其 doAnimationFrame() 方法,回调监听器中相应方法,刷新 UI 实现动画效果。 ValueAnimator 是 And 阅读全文
posted @ 2023-03-20 00:36
little_fat_sheep
阅读(408)
评论(0)
推荐(0)
摘要:
1 前言 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,凸镜贴图 中介绍了将圆形图片上的纹理映射到凸镜模型上。如果将原图片逐渐变为凸镜效果,中间的变化过程又是什么样的? 图片的纹理中心为 tc,图片中任意一点记为 t,tc 和 t 映射到凸镜模型中的坐标分别为 vc 和 v, 阅读全文
1 前言 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,凸镜贴图 中介绍了将圆形图片上的纹理映射到凸镜模型上。如果将原图片逐渐变为凸镜效果,中间的变化过程又是什么样的? 图片的纹理中心为 tc,图片中任意一点记为 t,tc 和 t 映射到凸镜模型中的坐标分别为 vc 和 v, 阅读全文
posted @ 2023-03-20 00:34
little_fat_sheep
阅读(287)
评论(0)
推荐(0)
摘要:
1 前言 MVP矩阵变换 中主要介绍了模型变换(平移、旋转、对称、缩放)和观测变换基本原理,本文将介绍透视变换的基本原理。 如下图,近平面和远平面间棱台称为视锥体,表示可见区域范围,视锥体以外的空间将被裁剪丢弃,视锥体内的模型通过透视变换投影到近平面上,近平面上得到的平面图形就是屏幕上要显示 阅读全文
1 前言 MVP矩阵变换 中主要介绍了模型变换(平移、旋转、对称、缩放)和观测变换基本原理,本文将介绍透视变换的基本原理。 如下图,近平面和远平面间棱台称为视锥体,表示可见区域范围,视锥体以外的空间将被裁剪丢弃,视锥体内的模型通过透视变换投影到近平面上,近平面上得到的平面图形就是屏幕上要显示 阅读全文
posted @ 2023-03-20 00:32
little_fat_sheep
阅读(609)
评论(0)
推荐(0)
摘要:
1 前言 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,同理,也可以将圆形上的纹理映射到凸镜的球形曲面上。如下图,最左边的竖条是原图片的截面(纹理坐标),最右边的竖条是变换后的顶点模型截面(顶点坐标)。 原图如下: 读者如果对 OpenGL ES 不太熟悉,请回顾以下内容 阅读全文
1 前言 正方形图片贴到圆形上 中将正方形图片上的纹理映射到圆形模型上,同理,也可以将圆形上的纹理映射到凸镜的球形曲面上。如下图,最左边的竖条是原图片的截面(纹理坐标),最右边的竖条是变换后的顶点模型截面(顶点坐标)。 原图如下: 读者如果对 OpenGL ES 不太熟悉,请回顾以下内容 阅读全文
posted @ 2023-03-20 00:29
little_fat_sheep
阅读(319)
评论(0)
推荐(0)
摘要:
1 前言 纹理贴图 中介绍了将矩形图片贴到矩形模型上,本文将介绍:在不裁剪图片的情况下,将正方形的图片贴到圆形模型上。 思考:实数区间 [0, 1] 与 [0, 2] 的元素可以建立一一映射关系么?答案是肯定的,如:y=2x、y=2x^2、y=2e^x/e^2、y=2ln(x+1)/ln2、 阅读全文
1 前言 纹理贴图 中介绍了将矩形图片贴到矩形模型上,本文将介绍:在不裁剪图片的情况下,将正方形的图片贴到圆形模型上。 思考:实数区间 [0, 1] 与 [0, 2] 的元素可以建立一一映射关系么?答案是肯定的,如:y=2x、y=2x^2、y=2e^x/e^2、y=2ln(x+1)/ln2、 阅读全文
posted @ 2023-03-20 00:27
little_fat_sheep
阅读(322)
评论(0)
推荐(0)
摘要:
1 前言 本文主要介绍使用 OpenGL ES 绘制立方体,并实现手动触摸事件控制立方体旋转。 为方便控制触摸旋转,假设旋转轴始终在 xoy 平面上,设 z 轴的方向向量 u = (0, 0, 1),触摸方向向量为 v(起点为ACTION_DOWN 时坐标,终点 ACTION_MOVE 时坐 阅读全文
1 前言 本文主要介绍使用 OpenGL ES 绘制立方体,并实现手动触摸事件控制立方体旋转。 为方便控制触摸旋转,假设旋转轴始终在 xoy 平面上,设 z 轴的方向向量 u = (0, 0, 1),触摸方向向量为 v(起点为ACTION_DOWN 时坐标,终点 ACTION_MOVE 时坐 阅读全文
posted @ 2023-03-20 00:26
little_fat_sheep
阅读(471)
评论(0)
推荐(0)
摘要:
1 前言 在立方体贴图(6张图)中,绘制了一个立方体,贴了 6 张图,本文的魔方案例,将实现绘制 27个立方体,贴 162 张图。贴图图片如下: 说明:inside.png 为魔方内部色块,用粉红色块代替白色块是为了凸显白色线框。 读者如果对 OpenGL ES 不太熟悉,请回顾以下内容 阅读全文
1 前言 在立方体贴图(6张图)中,绘制了一个立方体,贴了 6 张图,本文的魔方案例,将实现绘制 27个立方体,贴 162 张图。贴图图片如下: 说明:inside.png 为魔方内部色块,用粉红色块代替白色块是为了凸显白色线框。 读者如果对 OpenGL ES 不太熟悉,请回顾以下内容 阅读全文
posted @ 2023-03-20 00:24
little_fat_sheep
阅读(431)
评论(0)
推荐(0)
摘要:
1 前言 本文通过一个立方体贴图的例子,讲解三维纹理贴图的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下: 本文涉及到的知识点主要包含:三维绘图、MVP 矩阵变换、纹理贴图,读者如果对 OpenGL ES 不太熟悉,请回顾以下内容: 绘制三角形 绘制立方体 MVP矩阵变换 纹理贴图 阅读全文
1 前言 本文通过一个立方体贴图的例子,讲解三维纹理贴图的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下: 本文涉及到的知识点主要包含:三维绘图、MVP 矩阵变换、纹理贴图,读者如果对 OpenGL ES 不太熟悉,请回顾以下内容: 绘制三角形 绘制立方体 MVP矩阵变换 纹理贴图 阅读全文
posted @ 2023-03-20 00:23
little_fat_sheep
阅读(417)
评论(0)
推荐(0)
摘要:
1 前言 纹理贴图是指:将图片贴在模型的表面。 纹理贴图的本质是:将图片划分为一系列三角形,使得图片顶点序列与模型顶点序列中的顶点一一对应,对于模型中任意三角形内部的坐标和图片中对应三角形内部的坐标,可以通过插值,建立一一对应关系,模型中任意位置的颜色由其对应的图片位置的颜色填充。 本文 阅读全文
1 前言 纹理贴图是指:将图片贴在模型的表面。 纹理贴图的本质是:将图片划分为一系列三角形,使得图片顶点序列与模型顶点序列中的顶点一一对应,对于模型中任意三角形内部的坐标和图片中对应三角形内部的坐标,可以通过插值,建立一一对应关系,模型中任意位置的颜色由其对应的图片位置的颜色填充。 本文 阅读全文
posted @ 2023-03-20 00:20
little_fat_sheep
阅读(359)
评论(0)
推荐(0)
摘要:
1 前言 本文主要介绍 MVP 矩阵变换,其本质是线性变换,应用见→绘制立方体。 Model:模型变换,施加在模型上的空间变换,包含平移变换(translateM)、旋转变换(rotateM)、对称变换(transposeM)、缩放变换(scaleM); View:观测变换,施加在观测点上的变换 阅读全文
1 前言 本文主要介绍 MVP 矩阵变换,其本质是线性变换,应用见→绘制立方体。 Model:模型变换,施加在模型上的空间变换,包含平移变换(translateM)、旋转变换(rotateM)、对称变换(transposeM)、缩放变换(scaleM); View:观测变换,施加在观测点上的变换 阅读全文
posted @ 2023-03-20 00:18
little_fat_sheep
阅读(606)
评论(0)
推荐(0)
摘要:
1 前言 本文主要介绍使用 OpenGL ES 绘制立方体,读者如果对 OpenGL ES 不太熟悉,请回顾以下内容: 绘制三角形 绘制彩色三角形 绘制正方形 绘制圆形 在绘制立方体的过程中,主要用到了 MVP (Model View Projection)矩阵变换。 Model:模型变换, 阅读全文
1 前言 本文主要介绍使用 OpenGL ES 绘制立方体,读者如果对 OpenGL ES 不太熟悉,请回顾以下内容: 绘制三角形 绘制彩色三角形 绘制正方形 绘制圆形 在绘制立方体的过程中,主要用到了 MVP (Model View Projection)矩阵变换。 Model:模型变换, 阅读全文
posted @ 2023-03-20 00:16
little_fat_sheep
阅读(461)
评论(0)
推荐(0)
摘要:
1 前言 【OpenGL ES】绘制三角形 中介绍了绘制三角形的方法,【OpenGL ES】绘制正方形中介绍了绘制正方形的方法,本文将介绍绘制圆形的方法。 OpenGL 以点、线段、三角形为图元,没有提供绘制圆形的接口。要绘制圆形边框,必须通过割圆法逼近圆形;要绘制圆形的内部,必须通过三角形 阅读全文
1 前言 【OpenGL ES】绘制三角形 中介绍了绘制三角形的方法,【OpenGL ES】绘制正方形中介绍了绘制正方形的方法,本文将介绍绘制圆形的方法。 OpenGL 以点、线段、三角形为图元,没有提供绘制圆形的接口。要绘制圆形边框,必须通过割圆法逼近圆形;要绘制圆形的内部,必须通过三角形 阅读全文
posted @ 2023-03-20 00:11
little_fat_sheep
阅读(604)
评论(0)
推荐(0)
摘要:
1 前言 【OpenGL ES】绘制三角形 中介绍了绘制三角形的方法,本文将介绍绘制正方形的方法。 OpenGL 以点、线段、三角形为图元,没有提供绘制正方形内部的接口。要绘制正方形内部,必须通过三角形拼接而成,如下图,是通过GL_TRIANGLE_FAN 模式绘制正方形。 绘制的坐标点 阅读全文
1 前言 【OpenGL ES】绘制三角形 中介绍了绘制三角形的方法,本文将介绍绘制正方形的方法。 OpenGL 以点、线段、三角形为图元,没有提供绘制正方形内部的接口。要绘制正方形内部,必须通过三角形拼接而成,如下图,是通过GL_TRIANGLE_FAN 模式绘制正方形。 绘制的坐标点 阅读全文
posted @ 2023-03-20 00:10
little_fat_sheep
阅读(436)
评论(0)
推荐(0)
摘要:
1 前言 【OpenGL ES】绘制三角形 中介绍了绘制普通三角形的方法,本文将介绍绘制彩色三角形的方法。 本文完整代码资源见→【OpenGL ES】绘制彩色三角形 项目目录如下: 2 案例 MainActivity.java package com.zhyan8.triangle; 阅读全文
1 前言 【OpenGL ES】绘制三角形 中介绍了绘制普通三角形的方法,本文将介绍绘制彩色三角形的方法。 本文完整代码资源见→【OpenGL ES】绘制彩色三角形 项目目录如下: 2 案例 MainActivity.java package com.zhyan8.triangle; 阅读全文
posted @ 2023-03-20 00:10
little_fat_sheep
阅读(373)
评论(0)
推荐(0)
摘要:
1 前言 1.1 设置顶点属性 顶点有位置、颜色等属性,可以通过 glVertexAttribPointer 设置顶点的属性。 void glVertexAttribPointer( int index, //顶点属性的索引值,如:位置属性索引为0,颜色属性索引为1 int size, //每个 阅读全文
1 前言 1.1 设置顶点属性 顶点有位置、颜色等属性,可以通过 glVertexAttribPointer 设置顶点的属性。 void glVertexAttribPointer( int index, //顶点属性的索引值,如:位置属性索引为0,颜色属性索引为1 int size, //每个 阅读全文
posted @ 2023-03-20 00:09
little_fat_sheep
阅读(507)
评论(0)
推荐(0)
摘要:
1 前言 OpenGL(Open Graphics Library)是由 SGI 公司开发的一套 3D 图形软件接口标准,由于具有体系结构简单合理、使用方便、与操作平台无关等优点,OpenGL 迅速成为一种 3D 图形接口的工业标准,并陆续在各种平台上得以实现。 OpenGL ES(Open 阅读全文
1 前言 OpenGL(Open Graphics Library)是由 SGI 公司开发的一套 3D 图形软件接口标准,由于具有体系结构简单合理、使用方便、与操作平台无关等优点,OpenGL 迅速成为一种 3D 图形接口的工业标准,并陆续在各种平台上得以实现。 OpenGL ES(Open 阅读全文
posted @ 2023-03-20 00:07
little_fat_sheep
阅读(378)
评论(0)
推荐(0)

浙公网安备 33010602011771号