本节笔记来实践向场景中添加光源。
除了平行光源外,还有两种常用的光源:
点光源(Point Lights):点光源所发出的光是朝四面八方发散的,我们可以用点光源来模拟灯泡之类的发光物体。
聚光灯源(Spot Lights):聚光灯所发出的光是锥形的,我们可以用它来模拟手电筒,车灯,射灯等发光物体。
面光源(Area Light):面灯,仅用于Light baking,我们可以用它来模拟平板LED灯板,或者灯管的照射效果。
我们以一个会发光的金属苹果为例,首先我们将这个游戏物体拖入场景中

在这个Apple的Hierarchy窗口中,右键选择这个苹果,选择Light -> Point Light

接下里观察一下这个Point Light的Inspector

其中Type表示光源类型,即便是我们之前选择的是Point Light,在这里也还是可以修改成其他类型的光源。不同类型的光源属性稍微有些差别。

我们还是先来看Point Light的属性,调整一下Range,这个属性值越大,表示光源正中心发出的光最远能照到的距离,可以理解为时一个球体的半径。下面两张图是Range为2和Range为5时的对比


Color的意思很明显,灯光颜色
Mode是模式,可以选择为烘焙模式,混合模式或实时模式
Intensity表示光源的光照强度,值越大光源越亮,调整它为100看看

Indirect Multiplier,这个属性会影响这个光源提供出的间接光的强度:
如果小于1,表示间接光在每次从一个物体反射后,强度会变小,和真实的光行为一致。
如果大于1,表示间接光在每次从一个物体反射后,间接光会变得更加明亮,可以用来达到一些特殊效果。
Shadow Type配置阴影类型,这个在后面笔记再看
关于Rendoer Mode,可以参考下面这篇文章:
unity的forward rendering 中光源的使用和light的render mode_light render mode_leonwei的博客-CSDN博客在Unity中的light都有一个属性RenderMode,可以设置light的渲染模式为impotant还是非important,以前只是肤浅的认为important对应的就是像素光,非important就是顶点光,而auto就按照graphic quality里面的设置。后来看了一下unity的文档,其实不是这样,它完全的规则非常复杂:最亮的几个光源会被实现为完全的逐像素光https://blog.csdn.net/leonwei/article/details/48549075 Culling Mask可以设置场景中哪些Layer会受到这个灯光的影响,默认是所有layer,如果选择nothing,则可以认为这个灯光不起作用。
我们将上面例子的Type修改为Spot Light来看看,可以看到,Spot Light是一个锥形的光源。大部分属性都和Point Light一致,除了一个Inner/Outer Spot Angle属性

这个属性设置的是这个椎体内外展开角度,拖动一下,看看效果,直观感受一下就很清楚了

本小节笔记从科学的角度简单了解下光线和颜色的关系。
我们是如何感知到颜色的?现实世界中,白光实际上是多种颜色的光谱组合出来的。通过三棱镜可以将白光的各色光谱分出来。
物体的颜色会影响它吸收和反射光的行为。比如当光找到一颗橙子上时,橙色的光被反射出来,其它的光被橙子所吸收掉了。

当光线到达一个黑色物体时,几乎所有的光都被吸收了。目前人们造出了能够吸收大量光的黑色材料用于技术和美术领域,但就算是普通的黑色物体也能够做得非常好了。
最后,推荐一些免费的介绍光和颜色知识的在线资源:
Color science | Pixar in a Box | Computing | Khan AcademyJust as dialog, acting, and music are tools filmmakers use to convey meaning and emotion, color can be used to the same effect. But determining “color” is not as simple as saying “red” or “brown” because there are endless shades of color in the visible spectrum. In this lesson, you will learn how color is determined partly by the physics of light and partly by how our brains perceive it.https://www.khanacademy.org/computing/pixar/colorA Comprehensive Guide to Color Theory for Artists - Draw Paint AcademyUnderstanding color theory is essential for creating great art. In this post, you’ll learn what it means and how to use it effectively.
https://drawpaintacademy.com/a-comprehensive-guide-to-color-theory-for-artists/Books & Other Resources - Color Theory - Research Guides at Massachusetts College of Art and Design
https://massart.libguides.com/colorPART 2 - General Design Methods, by Bill Williams'Stage Lighting Design' - by Bill Williams
https://billwilliams.ca/resources/sld/sld-200.htm
当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/
我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它
我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以
当谈到运行时自省(introspection)和动态代码生成时,我认为ruby没有任何竞争对手,可能除了一些lisp方言。前几天,我正在做一些代码练习来探索ruby的动态功能,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:obj=Object.new#addamethoddirectlydefobj.new_method...end#addamethodindirectlywiththesingletonclassclass这只是冰山一角,因为我还没有探索instance_eval、module_eval和define_method的各种组合。是否有在线/离线资
我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca
我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
我正在开发一个创建网络博客的RubyonRails项目。我希望将一个名为featured的boolean数据库字段添加到Post模型中。该字段应该可以通过我添加的事件管理界面进行编辑。我使用了以下代码,但我什至没有在网站上显示另一列。$railsgeneratemigrationaddFeaturedfeatured:boolean$rakedb:migrate我是RubyonRails的新手,非常感谢任何帮助。我的index.html.erb文件中的相关代码(views):FeaturedPost架构.rb:ActiveRecord::Schema.define(:version=>
假设我有一个这样的单例类:classSettingsincludeSingletondeftimeout#lazy-loadtimeoutfromconfigfile,orwhateverendend现在,如果我想知道使用什么超时,我需要编写如下内容:Settings.instance.timeout但我宁愿将其缩短为Settings.timeout使这项工作有效的一个明显方法是将设置的实现修改为:classSettingsincludeSingletondefself.timeoutinstance.timeoutenddeftimeout#lazy-loadtimeoutfromc
我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion