Unity3d中lightMap的使用

环境:unity3d4.1,windows8.1

unity3d可以产生较好的光照贴图,在程序中使用它们可以产生较好的效果。

一、光照贴图偏移的获得

Renderer.lightmapTilingOffset 光照贴图平铺偏移

Description描述

The tiling & offset used for lightmap.用于光照贴图的平铺和偏移值。

A scene can have several lightmaps stored in it, and Renderer can use one of those lightmaps.This makes it possible to use the same material on multiple objects, while each object can refer to a different lightmap or different
portion of the same lightmap.

一个场景可以储存多个光照贴图,并且渲染器可以使用这些光照贴图其中之一。这使得有可能在多个物体使用相同的材质,虽然每个物体可以引用不同的光照贴图或同一光照的不同部分。

The vector‘s x and y refers to the lightmap scale, while z and w refers to the lightmap offset.

vector的x和y归为光照贴图的比例,z和w归为光照贴图的偏移。

二、光照贴图

光照贴图的代码如下:

	glTexCoord2f(u1*x + z, v1*y + w); glVertex3f(-2.0f, -2.0f, 0.0f);
	 glTexCoord2f(u2*x + z, v2*y + w); glVertex3f(-2.0f, 2.0f, 0.0f);
	 glTexCoord2f(u3*x + z, v3*y + w); glVertex3f(2.0f, 2.0f, 0.0f);
	 glTexCoord2f(u4*x + z, v4*y + w); glVertex3f(2.0f, -2.0f, 0.0f);

上面的ui和vi为纹理坐标,可以通过Mesh的uv2获得。

时间: 2024-10-07 16:57:53

Unity3d中lightMap的使用的相关文章

Unity3D 中的灯光与渲染

最近仔细研究了Unity3D中的灯光以及渲染,有了全新的认识,在这里整理记录下来.博主所使用的是Unity3D 2017.3.1f1这个版本. 一.Unity3D中的灯光 Directional Light:平行光,用来模拟太阳发射的光. Point Light:点光源,用于模拟场景中的灯和其他本地光源. Spot Light:聚光灯,通常用于人造光源,如手电筒,汽车前灯和探照灯. Area Light:区域光,只能用于烘焙中. Reflection Group:反射探针,用于准确反射周围环境.

unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到的原因

unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到的原因: 多半是因为物体所属Layer与照相机的culling mask不一致导致的,或者超出照相机的可视范围. 如果游戏中有多个相机,每个相机都有自己的可视范围和culling mask,物体在移动的过程中,进入不同的相机,其可见性可能是变化的,取决与物体所属Layer与当前相机是否一致

(转)Unity3D中移动物体位置的几种方法

1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale). 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position). 2.1 Transform.Tra

Windows系统Unity3D中的快捷键

[狗刨学习网] Windows系统Unity3D中的快捷键[td] 组合键 键 功能 File 文件 Ctrl   N New Scene 新建场景 Ctrl   O Open Scene 打开场景 Ctrl   S Save Scene 保存 Ctrl Shift S Save Scene as 保存场景为 Ctrl Shift B Build Settings... 编译设置... Ctrl   B Build and run 编译并运行 Edit 编辑 Ctrl   Z Undo 撤消 C

Unity3D中的Coroutine详解

Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutine程序执行流程怎么那么奇怪? unity中的coroutine原理是什么,怎么实现的? 使用unity的coroutine需要注意什么问题? 一.yield的在几种语言中的程序执行特性: Lua中的yield是使得协同函数运行->挂起并且传递参数给resume.resume使得协同函数挂起->运行

Unity3D中定时器的使用

源地址:http://unity3d.9tech.cn/news/2014/0402/40149.html 在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBehavior中一个人人皆知的定时器方法,每帧都在调用,那还有其他什么定时器的方法呢,这里介绍一下. 1.Invoke(string methodName,float time) 在一定时间调用methodName函数 1 2 3 4 5 6 7 8 9 10 11 12 13 using UnityEngine;

Unity3D中的序列化测试

Unity3D中序列化字段常使用[SerializeField],序列化类常采用[System.Serializable],非序列化采用[System.NonSerialized]. 序列化类使用时发现一些区别.测试如下: (1) 将脚本第一次拖拽到场景中后,运行程序.发现,对类进行序列化后,id,name会保持在代码中写的字段值. 如果我们退出运行,对检视面板的值进行修改,再运行,如下图所示.那么会始终运行检视面板中修改的值! 如果我们退出运行,对代码中的值进行修改,再运行,如下图所示.那么发

Unity3D中事件函数的运行顺序

Unity3D中脚本的生命周期是依照预先定义好的事件函数的运行流程来演化的,详细流程例如以下: Editor模式下Reset: 当脚本第一次被挂到GameObject上或用户点击Resetbutton时,Reset被调用初始化脚本属性,最经常使用于在Inspector视图中呈现好的默认值. 载入第一个场景First Scene Load: 场景启动时会对场景中的每一个对象运行一遍例如以下事件函数: Awake:游戏启动之前初始化不论什么变量和游戏状态,仅在脚本生命周期中调用一次.不能做协程,St

Unity3D中灵活绘制进度条

有时我们需要在Unity3D中绘制进度条,如:           或        如果使用4.6版本以下的unity绘制环形的进度条可能需要费点劲.我搜到的大多数方法都是用NGUI插件,但有时只是为了简单的画一个环形UI,使用NGUI反而还增加了学习成本.有一个利用CutOut材质的方法能够利用alpha值,灵活的控制进度条中需要显示的部分,以环形进度条为例,方法如下: 1.在PS中制作一张如下所示的图,RGB为进度条想要的颜色,alpha值从5-250环形渐变(如果从0-255,在进度为0