精华内容
下载资源
问答
  • 从全局考虑
    千次阅读
    2021-11-19 14:16:02

    前言

    双目立体匹配的原理类似于人类的视觉原理:分别单独使用左眼和单独使用右眼去观察一个物体,该物体在两个视角中的相对位置会存在一定的偏移,人类视觉系统可以根据该偏移去判断该物体的距离远近。

    同样的,在双目立体匹配中,只要能在两张图像中正确地找到匹配点,结合相机的内部参数和外部参数,就能精准地计算出空间点距离拍摄相机的距离。

    目录

    一、立体匹配简介

    二、国内外研究现状

    更多相关内容
  • 解析 ruby 全局变量

    2021-01-02 22:35:53
    同时也视为程序的设计未经严格考虑.当你发现必须要使用全局变量时,记得给它一个不会在其它地方一不小心就用到的描述性名字(像上面那样叫$foo可能不是一个好想法). 全局变量的好处是其可以被跟踪;你可以做一个当变量...
  • 建立了考虑蒸汽温位因素的全局能量集成超结构,描述了在全局热源、公用工程、汽轮机、全局热阱之间进行热量传递和交换的所有可能的拓扑结构。基于此超结构,建立了全局能量集成的混合整数非线性规划模型,并用列队...
  • 今天,在整理自己的代码的时候,考虑到我写的代码一至终都是在一个cpp文件里面。于是,想把自己的代码中的各个模块分离开来,以便更好地阅读和管理。 遇到的问题 我的做法是: 宏定义、结构体定义、函数声明以及...
  • 基于事件社会网络中考虑约束全局推荐策略.pdf
  • 提出了基于广域信息的分层控制器结构,第一层是负责计算全局信息(如功角中心、角速度中心)的广域控制器...四机系统的仿真结果表明,当考虑广域信息的时滞影响时,该控制器仍能快速平息系统的振荡,提高系统的稳定性。
  • 考虑自动驾驶仪故障的复合全局滑模制导律.pdf
  • 考虑新能源资源及出力特性的全局备用容量优化方法.pdf
  • Gobal Attention的目的:是为了在生成上下文向量(也可以认为是句向量)时将所有的hidden state都考虑进去。Attention机制认为每个单词在一句话中的重要程度是不一样的,通过学习得到一句话中每个单词的权重。即为...
  • 研究了一个更一般的考虑CTL免疫作用的HIV感染的数学模型.模型的动力学性态完全由基本再生数Ro决定.当Ro≤1时,无病毒感染的平衡点是全局渐近稳定的;当Ro>1时,平凡平衡点失去稳定性,感染平衡点是全局渐近稳定的...
  • 模块的名字>)的时候不用考虑模块在哪,如果不修改全局路径,用户下载的模块会默认在C:\Users\Administrator\AppData\Roaming\npm这个路径下。 局部:执行npm install <包的名字>(注意少了-g)就会将模块安装在...
  • 提出一种基于全局主色和局部主色相结合的...不仅利用图像的颜色特征,也考虑颜色特征的空间分布。对该方法的检索效果和性能进行详细分析。实验结果表明该方法反映图像颜色的空间分布及局部细节,具有更好的检索效果。
  • LBF模型对初始轮廓大小和位置非常敏感,并且只考虑了图像的局部信息,没有考虑图像的全局信息;CV模型利用图像全局信息,对初始轮廓具有较强的鲁棒性。两种模型对椒盐噪声污染的图像不能取得令人满意的结果。针对...
  • 本简要介绍中考虑的动态系统是标准形式,是非线性的动态系统,比输出反馈系统更大。 一种新的内部模型设计方法用于开发外部系统中的非线性,并结合高增益设计来实现非谐波干扰的渐近抑制,并保证整个系统的半全局...
  • 针对现有任务调度算法优先级选取过于单一所产生局部较优调度结果的问题,从全局较优出发,提出一种先分层后分支决定优先级的静态任务调度算法―HGCOTS算法。该算法考虑了任务间较大的通信开销和冗余任务对异构CMP...
  • LabVIEW 是以数据流决定程序框图元素的执行顺序,但在某些程序框图中需要消除数据流的依赖性,这时可以考虑使用变量。LabVIEW中的变量是程序框图中的元素,通过它可以在另一位置访问或存储数据。根据不同的变量类型...
  • 将多示例多标记学习问题退化为传统监督学习问题求解,但是该算法在退化过程中没有考虑标记之间的相关信息,本文利用一种既考虑全局相关性又考虑到局部相关性的多标记算法GLOCAL来对MIMLSVM进行改进,实验结果显示...
  • JNI:全局引用&局部引用&弱全局引用

    千次阅读 2022-03-05 00:44:08
    Java虚拟机创建的对象传到本地 C/C++ 代码时就会产生引用。根据Java的垃圾回收机制,只要有引用存在就不会触发该引用指向的Java对象的垃圾回收。这些引用在 JNI 中分为三种全...

    从Java虚拟机创建的对象传到本地 C/C++ 代码时就会产生引用。根据Java的垃圾回收机制,只要有引用存在就不会触发该引用指向的Java对象的垃圾回收。这些引用在 JNI 中分为三种

    1. 全局引用 (Global Reference)

    2. 局部引用 (Local Reference)

    3. 弱全局引用 (Weak Global Reference), JDK 1.2 引入

    1. 局部引用

    • 最常见的引用类型,基本上通过JNI返回来的引用都是局部引用

    例如,使用NewObject就会返回创建出来的实例的局部引用。局部引用只在该native函数中有效,所有在该函数中产生的局部引用,都会在函数返回的时候自动释放(freed)。也可以使用DeleteLocalRef函数进行手动释放该引用。

    • 想一想既然局部引用能够在函数返回时自动释放,为什么还需要DeleteLocalRef函数呢?

    实际上局部引用存在,就会防止其指向的对象被垃圾回收。尤其是当一个局部引用指向一个很庞大的对象,或是在一个循环中生成了局部应用;最好的做法就是在使用完该对象后,或在该循环尾部把这个引用释放掉,以确保在垃圾回收器被触发的时候被回收。

    • 在局部引用的有效期中,可以传递到别的本地函数中,要强调的是它的有效期仍然只在一次的Java本地函数调用中,所以千万不能用C++全局变量保存它或是把它定义为C++静态局部变量。

    2. 全局引用

    • 全局引用可以跨越当前线程,在多个native函数中有效,不过需要编程人员手动来释放该引用。全局引用存在期间会防止在Java的垃圾回收的回收。

    • 与局部引用不同,全局引用的创建不是由 JNI 自动创建的,全局引用需要调用 NewGlobalRef 函数,而释放它需要使用 ReleaseGlobalRef 函数。

    3. 弱全局引用

    弱全局应用是 JDK 1.2 新出来的功能,与全局引用相似,创建跟释放都需要由编程人员来进行操作。这种引用与全局引用一样可以在多个本地代码有效,也可以跨越多线程有效;不一样的是,这种引用将不会阻止垃圾回收器回收这个引用所指向的对象。

    使用 NewWeakGlobalRef 跟 ReleaseWeakGlobalRef 来产生和释放应用。

    4. 关于引用的一些函数

    jobject NewGlabalRef(jobject obj);
    jobject NewLocalRef(jobject obj);
    jobject NewWeakGlobalRef(jobject obj);
    
    
    void DeleteGlobalRef(jobject obj);
    void DeleteLocalRef(jobject obj);
    jboolean IsSameObject(jobject obj1, jobject obj2);

    IsSameObject 函数对于弱引用全局应用还有一个特别的功能,把NULL传入要比较的对象中,就能够判断弱全局引用所指向的Java对象是否被回收。

    5. 缓存jfieldID / jmethodID

    获取 jfieldID与jmethodID 的时候会通过该属性/方法名称加上签名来查询相应的 jfieldID/jmethodID。这种查询相对来说开销较大。在开发中可以将这些 FieldID/MethodID 缓存起来,这样就只需要查询一次,以后就使用缓存起来的 FieldID/MethodID。

    • 下面介绍两种缓存方式

    1. 在使用时缓存 (Caching at the Point of Use)

    2. 在Java类初始化时缓存 (Caching at the Defining Class's Inititalizer)

    5.1 在使用时缓存

    在native 代码中使用static局部变量来保存已经查询过的jfieldID/jmethodID ,这样就不会在每次的函数调用时查询,而只要一次查询成功后就保存起来了。

    JNIEXPORT void JNICALL Java_Test_native( JNIEnv* env, jobject ojb) {
    static jfieldID fieldID_str = NULL;
       jclass clazz = env->GetObjectClass( obj );
       if(fieldID_str == NULL){
           fieldID_str = env->GetFieldID(clazz, "strField", "Ljava/lang/String");
       }
         //TODO Other codes
    }

    不过这种情况下,就不得不考虑多线程同时调用此函数时可能导致同时查询的并发问题,不过这种情况是无害的,因为查询同一个属性或者方法的ID,通常返回的值是一样的。

    5.2 在Java类初始化时缓存

    • 更好的一个方式就是在任何native函数调用之前把id全部缓存起来。

    • 可以让Java在第一次加载这个类的时候,首先调用本地代码初始化所有的 jfieldID/jmethodID,这样的话就可以省去多次判断id是否存在的冗余代码。当然,这些 jfieldID/jmethodID 是定义在C/C++ 的全局。

    • 使用这种方式还有好处,当Java类卸载或者重新加载的时候,也会重新调用该本地代码来重新计算IDs。

    java代码

    public class TestNative {
    
    
       static {
           initNativeIDs();
       }
    
    
       static native void initNativeIDs();
    
    
       int propInt =0;
    
    
       String propStr = "";
    
    
       public native void otherNative();
    
    
            //TODO Other codes
        }

    C/C++ 代码

    //global variables
    jfieldID g_propInt_id = 0;
    jfieldID g_propStr_id = 0;
    
    
    
    
    JNIEXPORT void JNICALL Java_TestNative_initNativeIDs( JNIEnv* env, jobject clazz){
       g_propInt_id = env->GetFieldID(clazz, "propInt", "I");
       g_propStr_id = env->GetFieldID(clazz, "propStr", "Ljava/lang/String;");    
    }
    
    
    
    
    JNIEXPORT void JNICALL Java_TestNative_otherNative( JNIEnv* env, jobject obj){
        // TODO get field with g_propInt_id/g_propStr_id
    }

    6. 总结

    • 最简单的Java调用C/C++函数的方法

    • 获取方法/属性的ID;学会了获取/设置属性;还有Java函数的调用

    • Java/C++之间的字符串的转换问题

    • 在C/C++下如何操作Java的数组

    • 三种引用方式

    • 如何缓存属性/方法的ID

    7. 回顾

    • 使用了JNI,那么这个Java应用将不能跨平台了。如果要移植到别的平台上,那么native代码就需要重新进行编写

    • Java是强类型的语言,而C/C++不是。因此,必须在写JNI时倍加小心

    • 总之,必须在构建Java程序的时候,尽量不用或者少用本地代码

    • 异常处理

    • C/C++ 如何启动JVM

    • JNI与多线程

    《The Java Native Interface Programmer's Guide and Specification》
    《JNI++ User Guide》

    834c331da56a042c79f1dd072338b3c9.png

    分享&在看

    展开全文
  • 【UE4零开始 082】全局光照

    千次阅读 2019-09-19 16:07:39
    Lightmass(全局光照) 创建具有复杂光交互作用的光照图,例如区域阴影和漫反射。它用于预计算 static(静态) 和 stationary(静止) 光源的照明贡献部分。 编辑器和全局光照之间的通信由 Swarm Agent 处理,它管理...

    Lightmass(全局光照) 创建具有复杂光交互作用的光照图,例如区域阴影和漫反射。它用于预计算 static(静态)stationary(静止) 光源的照明贡献部分。

    编辑器和全局光照之间的通信由 Swarm Agent 处理,它管理本地的照明构建,也可以将照明构建分发到远程机器。默认情况下以最小化方式打开的 Swarm Agent 还会跟踪照明构建进度,并让您了解哪些机器为您工作,它们在做什么,以及每个机器使用了多少线程。

    下图是Swarm Agent的一个示例图像(靠近底部的条形图显示了构建的完成程度)。

    在这里插入图片描述

    静态和静止光源的特性

    漫反射

    Diffuse Interreflection(漫反射) 是目前为止视觉上最重要的全局照明效果。在默认情况下,光源以全局光照反射,而材质的 BaseColor(基本颜色) 项控制有多少光(和什么颜色)向各个方向反射。这种效果有时被称为渗色。漫反射是入射光在各个方向上均匀反射,即不受观测方向或位置的影响。

    这里是一个由全局光照创建的场景,只有一个方向的光,且仅显示直接照明。光源无法直接照射的区域是黑色的。这是没有全局照明的结果。
    在这里插入图片描述
    这是第一个漫反射全局照明反射的样子。注意左边椅子后面的阴影,这叫做间接阴影,因为它是间接光的阴影。漫反射的亮度和颜色取决于入射光和与之相互作用的材质的漫反射项。每次反射都比前一次更暗,因为一些光被表面吸收而不是被反射。柱子底座比其他表面得到更多的间接光,因为它们更接近直射光下的区域。
    在这里插入图片描述
    这是第二次漫反射。光线变得更弱,分布更均匀。
    在这里插入图片描述

    这是四种漫反射相结合的场景。比起手动放置补光灯,模拟全局照明可以创建更细致和现实的照明。尤其是补光灯无法实现间接阴影。
    在这里插入图片描述

    反射光照获取基础材质的漫反射颜色,如下所示。这就是渗色这个术语的由来。渗色最明显的是高度饱和的颜色。可以通过在 Primitive(基元)Material(材质)Level(关卡) 上提升 DiffuseBoost 来夸大效果。

    在这里插入图片描述在这里插入图片描述

    角色照明

    全局光照在 Lightmass Importance Volume(全局光照重要性体积) 内以较低的分辨率将样本放置在一个统一的三维网格体中,并以较高的分辨率将样本放置在角色可能行走的向上表面上。每个照明示例捕获来自各个方向的间接光照,但不包括直接光照。

    第一幅图像是放置在地板上方的照明样本调试可视化,第二幅图像是光照模式下的相同场景。请注意红色挂毯上面的样本如何获取红色反射光。这些样本被可视化为单一颜色,但它们确实捕获了来自各个方向的光线。

    在这里插入图片描述在这里插入图片描述

    然后,间接照明缓存使用这些照明样本为可移动对象插入间接照明。间接照明影响光源环境阴影的颜色,而不是方向。使用 Show(显示)-> Visualize(可视化)-> Volume Lighting Samples(体积照明样本) 在视口中预览它们。

    限制
    • 体积样本放置的默认设置将导致在大型贴图中出现大量样本。这将导致间接照明缓存插值时间非常大。使用 Static Lighting Level Scale(静态光源等级缩放) 减少大贴图中的样本计数。
    • 全局光照重要性体积外的可移动对象将采用黑色间接照明。

    环境遮挡

    全局光照会自动计算出详细的间接阴影,但是为了艺术目的夸大间接阴影或者增强场景的接近感是很有用的。

    Ambient occlusion(环境遮挡) 是从一个均匀明亮的上半球得到的间接阴影,就像阴天。全局光照支持计算环境遮挡,将其应用于直接和间接照明,然后将其烘焙成光照图。默认情况下,环境遮挡是启用的,可以通过取消选中 World Settings(世界场景设置) 下的 Lightmass(全局光照)Lightmass Settings(全局光照设置) 中的 Use Ambient Occlusion(使用环境遮挡) 复选框来禁用。

    第一幅图是一个有间接照明但没有环境遮挡的场景。第二幅图是有环境遮挡的相同场景,且环境遮挡应用于直接和间接照明,注意对象聚集的地方变暗。

    无环境遮挡有环境遮挡
    在这里插入图片描述在这里插入图片描述
    环境遮挡设置
    属性说明
    Visualize Ambient Occlusion(可视化环境遮挡)在构建照明时,仅使用遮挡因子覆盖光照图。这有助于准确地了解遮挡因子是什么,并比较不同设置的效果。
    Max Occlusion Distance(最大遮挡距离)一个对象对另一个对象造成遮挡的最大距离。
    Fully Occluded Samples Fraction(完全遮挡样本比例)为了达到完全遮挡,必须遮挡的样本的比例。请注意,还有一个逐基元FullyOccludedSamplesFraction,它允许控制一个对象对其他对象造成的遮挡量。
    Occlusion Exponent(遮挡指数)指数越高,对比度越高。
    默认AO设置(MaxOcclusionDistance = 200,FullyOccludedSamplesFraction = 1.0,OcclusionExponent = 1.0)。MaxOcclusionDistance = 5。去除低频遮挡,只留下角落遮挡。FullyOccludedSamplesFraction = 0.8。所有范围内的遮挡都变暗了,任何80%及以上遮挡的区域都饱和成黑色。OcclusionExponent = 2。遮挡从中等过渡到饱和黑色要快得多,遮挡被推到角落里。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    当间接照明反射次数大于0时,在照明构建时间范围内,环境遮挡几乎是没有的。

    限制
    • 环境遮挡需要相当高的光照图分辨率才能良好显示,因为它在角落变化很快。
    • 预览质量构建在预览环境遮挡方面做得不是很好,因为AO需要非常密集的光照样本(就像间接阴影)。

    遮罩阴影

    全局光照在计算阴影时考虑了BLEND_Masked材质的不透明度遮罩。在编辑器视口中被剪切的部分材质也不会引起任何投影,这允许从树和叶子进行更详细的投影。

    在这里插入图片描述在这里插入图片描述

    仅适用于静止光源的特性

    环境法线天空遮挡

    当启用 stationary(静止)Sky Light(天空光照) 时,全局光照以环境法线的形式产生定向遮挡。

    距离场阴影贴图

    全局光照计算 stationary(静止) 光源的距离场阴影贴图。距离场阴影贴图即使在较低的分辨率下也能很好地保持其曲线形状;然而,它们不支持区域阴影或半透明阴影。

    仅适用于静态光源的特性

    区域光源和阴影

    采用全局光照时,所有 static(静态) 光源在默认情况下都是区域光源。 Point Light(点光源)Spot Light(聚光源) 使用的形状是一个球体,其半径是由 Lightmass Settings(全局光照设置) 下的 Light Source Radius(光源半径) 设置的。Directional Light(定向光源) 使用一个圆盘,位于场景的边缘。光源的大小是控制阴影柔度的两个因素之一,因为较大的光源会产生较柔和的阴影。另一个因素是从接收位置到阴影投射物的距离。随着距离的增加,阴影变得柔和,就像在现实生活中一样。

    第一幅图像是一个静态定向光源,只有静态照明,半影大小在任何地方都是相同的。在第二幅图像中,全局光照计算的区域阴影的清晰度由光源大小和遮挡物距离控制。注意柱子阴影在接近地面的地方如何变得更加清晰。

    在这里插入图片描述在这里插入图片描述

    Point Light(点光源)Spot Light(聚光源) 的半径用黄色线框表示,影响半径用蓝绿色线框表示。在大多数情况下,需要确保光源不与任何投射阴影的几何体相交,否则光线将在该几何体的两侧发出。
    在这里插入图片描述

    半透明阴影

    光在通过应用到静态阴影投射网格体的半透明材质之后,将失去一些能量,导致半透明的阴影。
    在这里插入图片描述

    半透明阴影颜色

    穿过材质的光称为透射光,每个颜色通道的透射光量在0到1之间。值为0表示完全不透明,1意味着入射光可以不受影响的穿过。由于透射光没有材质输入,所以目前是由以下其他材质输入得出的:

    • 光照材质
      • BLEND_Translucent和BLEND_Additive:透射光 = Lerp(White、BaseColor、Opacity)
      • BLEND_Modulate:透射光 = BaseColor
    • 无光照材质
      • BLEND_Translucent和BLEND_Additive:透射光 = Lerp(White、Emissive、Opacity)
      • BLEND_Modulate:透射光 = Emissive

    这意味着在不透明度为0时,该材质不会过滤掉入射光,也不会有半透明的阴影。在不透明度为1时,入射光将被材质的自发光或基本颜色(取决于是否被点亮)过滤。请注意,间接照明有时会洗掉半透明的阴影,使它们比半透明材料的自发光或漫反射更不饱和。

    半透明阴影清晰度

    有几个因素控制半透明阴影清晰度。

    使用大光源(光源角度为5的定向光源)使用小光源(光源角度为0)
    在这里插入图片描述在这里插入图片描述
    使用了一个小光源,但是光照图的分辨率太低,无法捕捉到清晰的半透明阴影质导出的分辨率过低(由材质编辑器中的导出分辨率比例(Export Resolution Scale)控制),无法捕捉到清晰的阴影
    在这里插入图片描述在这里插入图片描述

    间接光源也受到半透明材质的影响。该图像中的窗口根据光线的透射情况对入射光进行过滤,然后光线会在场景中来回反射,且颜色会发生变化。
    在这里插入图片描述

    限制
    • Translucent Materials(半透明材质) 目前不散射光,所以它们不会在其周围的对象上渗色。
    • 第一个漫反射目前不受半透明阴影的影响。这意味着,通过半透明材质的第一反射间接光源不会被该材质的 Transmission(透射) 过滤。
    • 目前不支持折射(透射光的焦散)。

    使用全局光照获取最佳质量

    使灯光显眼

    漫反射纹理

    渲染期间,光照像素颜色被确定为 BaseColor * Lighting(基本颜色 * 照明),所以基本颜色直接影响光照的可见度。高对比度或暗漫反射纹理使光照很难被注意到,而低对比度中距离漫反射纹理让光照的细节表现出来。

    比较第一幅图像中使用中等漫反射纹理构建的场景和第二幅图像中同样使用全局光照但带有噪点的黑色漫反射纹理构建的场景照明清晰度。第二幅图像中,只有最频繁的变化才会在场景中被注意到,比如阴影过渡。

    使用中等漫反射纹理构建的场景带有噪点的黑色漫反射纹理构建的场景
    在这里插入图片描述在这里插入图片描述

    Unlit(无光照) 视图模式可用于查看漫反射项。第一幅图像中的场景在无光照视图模式下看起来更加平坦和单调,这意味着所有的工作都是由光照完成的,最终像素颜色的变化主要是由于光照的不同。(为了获得良好的照明,在无光照视图模式下,场景看起来单调乏味。)将照明和宏观特征烘焙到漫反射纹理中将抵消照明。

    在这里插入图片描述在这里插入图片描述
    照明设置
    • 避免环境照明!像环境立方体贴图这样的环境照明会在关卡中添加一个恒定的环境项,从而减少间接光照区域的对比度。
    • 设置光源,使直接光照区域和间接光照区域之间有鲜明对比。对比度会让您更容易找到阴影过渡的位置,也会让您的关卡更有深度感。
    • 设置光源,使明亮区域不是太亮,黑暗区域不全黑,而仍然有值得注意的细节。检查最终目标显示器上的黑暗区域是很重要的。

    改善照明质量

    光照图分辨率

    使用高分辨率的纹理光照图是获得清晰、高质量照明的最好方法。使用高光照图分辨率的缺点是占用更多纹理内存和增加构建时间,所以需要做一个权衡。理想情况下,场景中的大部分光照图分辨率应该分配在高视觉影响区域和有高频阴影的地方。

    全局光照解算器质量

    Lightmass Solver(全局光照解算器) 设置是根据 Lighting Build Options(照明构建选项) 对话框中请求的构建质量自动设置的。生产应该提供足够好的质量,即在应用漫反射纹理时,穿帮不是很明显。

    获取最佳照明构建时间

    全局光照重要性体积

    许多贴图在编辑器中已经网格化到网格的边缘,但是需要高质量照明的实际可玩区域要小得多。全局光照取决于关卡的大小发射光子,因此这些背景网格体将大大增加需要发射的光子数量,而照明构建时间也将增加。全局光照重要性体积控制全局光照发射光子的区域,允许将其集中在需要清晰间接照明的区域。在重要性体积之外的区域在较低的质量下只能得到一次间接照明的反射。

    第一幅图像中显示了多玩家地图的系统占用线框视图。需要高质量照明的实际可玩区域是中心的绿色小团。

    第二幅图像中显示了多玩家地图可玩区域的近景,并正确选择了设置 Lightmass Importance Volume(全局光照重要性体积)。全局光照重要性体积将该区域的半径从80,000单位减少到10,000单位,照明面积小了64x倍。

    在这里插入图片描述在这里插入图片描述

    要将一个 Lightmass Importance Volume(全局光照重要性体积) 添加到某个关卡中,可以从 Modes(模式) 菜单的 Volume(体积) 选项卡中将这个 Lightmass Importance Volume(全局光照重要性体积) 对象拖动到关卡中,然后将其缩放到所需的大小。
    在这里插入图片描述
    还可以通过单击 Actor 下的 Details(细节) 面板中的 Convert Actor(转换Actor) 下拉框,将画笔转换为全局光照重要性体积。
    在这里插入图片描述
    单击该下拉框后,将出现一个菜单,可以在其中选择要替换画笔的Actor类型。
    在这里插入图片描述
    如果放置多个全局光照重要性体积,那么大多数照明工作将通过包含所有这些体积的边界框来完成。但是,体积照明样本仅放置在较小的体块中。

    世界场景设置

    可在 Lightmass(全局光照) 部分下的 World Settings(世界场景设置) 窗口中调整全局光照设置。
    在这里插入图片描述
    可从 Toolbar(工具栏) 单击WorldSettings_Icon.png图标以访问 World Settings(世界场景设置)

    属性说明
    Force No Precomputed Lighting(强制不使用预计算照明)这将使全局光照无法生成光源和阴影贴图,强制关卡仅使用动态照明。
    Static Lighting Level Scale(静态光源等级缩放)关卡的比例相对于引擎的比例,1虚幻单位 == 1cm。这可用于确定在照明中计算多少细节,较小的比例将大大增加构建时间。对于巨型关卡,可以使用2或4左右的较大比例来减少构建时间。
    Num Indirect Lighting Bounces(间接照明反射次数)允许光从光源反射到物体表面的次数。0为仅直接光照,1为一次反射,以此类推。反射1次计算时间最长,其次是反射2次。连续的反射几乎是不受约束的,但也不会增加太多的光,因为光在每次反射后都会衰减。
    Indirect Lighting Quality(间接照明质量)缩放全局光照GI解算器使用的样本计数。设置越高,会导致构建时间大量增加,但解算器穿帮(噪点、斑点)变少。请注意,这不会影响由于使用光照图(纹理接缝、压缩假影、纹索形状)而产生的穿帮。
    Indirect Lighting Smoothness(间接照明平滑度)数值越高,间接照明越平滑,可以隐藏解算器噪点,但也会丢失清晰的间接阴影和环境遮挡。在增大 Indirect Lighting Quality(间接照明质量) 以获取最高质量时,把这个值降低一些是有用的(0.66或0.75)。
    Environment Color(环境颜色)错过这个场景的光线会被染上的颜色。环境可以可视化为一个围绕着关卡的球体,向各个方向发射这种颜色的光。
    Environment Intensity(环境强度)缩放环境颜色以允许HDR环境颜色。
    Diffuse Boost(漫射增强)缩放场景中所有材质的漫反射效果。增加 DiffuseBoost(漫射增强) 是增加场景中间接照明强度的有效方法。在应用 DiffuseBoost(漫射增强) 之后,漫反射项的亮度被限制为1.0,以保持材质的能量守恒(这意味着光在每次反射时必须减少,而不是增加)。如果提高 DiffuseBoost(漫射增强) 未导致更明亮的间接照明,漫射项正被限制,光的IndirectLightingScale应该用于增加间接照明。
    Use Ambient Occlusion(使用环境遮挡)使静态环境遮挡可以通过全局光照计算并内置到光照图中。
    Direct Illumination Occlusion Fraction(直接照明遮挡率)多少AO应用于直接照明。
    Indirect Illumination Occlusion Fraction(间接照明遮挡率)多少AO应用于间接照明。
    Occlusion Exponent(遮挡指数)指数越高,对比度越高。
    Fully Occluded Samples Fraction(完全遮挡样本比例)为了达到完全遮挡,必须遮挡的样本的比例。
    Max Occlusion Distance(最大遮挡距离)一个对象对另一个对象造成遮挡的最大距离。
    Visualize Material Diffuse(可视化材质漫反射)仅用导出到全局光照的材质漫反射覆盖法线直接和间接照明。这在验证导出的材质漫反射与实际漫反射匹配时非常有用。
    Visualize Ambient Occlusion(可视化环境遮挡)仅用AO项覆盖法线直接和间接照明。这在调整环境遮挡设置时很有用,因为它隔离了遮挡项。
    Level Lighting Quality(关卡照明质量)这反映了当前关卡的照明构建质量设置。

    光源设置

    下面是可以在 Lightmass(全局光照) 部分的光源属性中进行调整的 Lightmass(全局光照) 设置。
    在这里插入图片描述

    属性说明
    Indirect Lighting Saturation(间接照明饱和度)0将导致间接照明完全不饱和,1将保持不变。
    Shadow Exponent(阴影指数)控制阴影半影的衰减,或区域从完全光照到完全阴影的变化速度。
    Light Source Angle(光源角度)对于 Directional Lights Only(仅定向光源),确定光的自发光面相对于接收器的延伸角度,影响半影大小。

    基元组件设置

    下面是可以在从 Modes(模式) 菜单的 Geometry(几何体) 选项卡中添加的 Brush(画笔) 上进行调整的 **Lightmass(全局光照)**设置。这些选项可以在 Brush(画笔)Details(细节) 面板下找到。
    在这里插入图片描述

    属性说明
    Diffuse Boost(漫射增强)缩放应用到此对象的所有材质的漫反射效果。
    Fully Occluded Samples Fraction(完全遮挡样本比例)为了实现对其他对象的完全遮挡,从此对象中采集的AO样本必须被遮挡的比例。这允许控制一个对象对其他对象造成多少遮挡。
    Shadow Indirect Only(仅间接阴影)如果选中此项,则此对象只会对间接照明产生阴影。这对于草非常有用,因为渲染的几何体只是实际几何体的表示,并不一定会投射出精确形状的阴影。它对草也很有用,因为产生阴影的频率太高,无法存储在预计算的光照图中。
    Use Two Sided Lighting(使用双面照明)如果选中此项,该对象将被照亮,就好像它接受来自其多边形两侧的光照。

    基本材质设置

    下面是可以在 Details(细节) 面板下的 Base Node(基本节点)Material(材质) 中进行调整的 Lightmass(全局光照) 设置。
    在这里插入图片描述

    属性说明
    Cast Shadow as Masked(像在遮罩状态一样下投射阴影)对于半透明材质,将该材质视为已被遮罩的材质,以用于阴影投射。
    Diffuse Boost(漫射增强)缩放此材质对静态照明的漫反射效果。
    Export Resolution Scale(导出分辨率缩放)缩放导出此材质属性时的分辨率。当需要细节时,这对于提高材质分辨率非常有用。
    展开全文
  • 静态变量static和全局变量global

    千次阅读 2021-03-04 05:42:25
    静态变量static ,全局变量global静态变量在java也叫类变量名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,...

    静态变量static , 全局变量global

    静态变量 在java也叫类变量从名字可以看出它是属于某个类的而不是类的实例。它的关键字是static存储在静态存储区,当程序执行,类的代码被加载到内存,类的静态变量就分配了内存空间,他是属于类的也就是没个实例对象都是对于以个静态变量,静态变量的内存空间知道程序退出才释放所占用的内存空间。静态变量直接通过类名访问(java 也能通过对象名访问)。

    有人会分全局的静态变量、局部的静态变量;全局静态变量失去了“全局”的普遍含义,它的作用域限定在本文件里。而静态变量的声明是应该出现在类里不是类的函数里。

    全局变量 关键字global也是静态存储方式,存储在静态存储区。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。

    全局变量和静态变量的区别:

    全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。

    也能这么看:

    A.若全局变量仅在单个文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

    B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

    设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题:

    D.如果我们需要一个可重入的函数,那么我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的函数)

    E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

    从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

    变量的6种作用:全局作用域,文件作用域,命名空间作用域,类作用域,局部作用域,语句作用域。

    展开全文
  • SpringMVC之全局异常处理

    千次阅读 2022-04-09 19:49:06
    一、为什么要全局异常处理? 我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中,...
  • 1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器...
  • 考虑一类具分段常数变量的Logistic模型的正平衡点的全局吸引性,利用离散Lyapunov函数方法获得了该模型的正平衡点全局吸引性的一个新的充分条件.所得结果放宽了已有文献对内禀增长率小于或等于2的限制.
  • Python全局变量是什么?Python全局变量怎么使用?通常可以将任何编程语言中的变量定义为用于以特定名称存储值的元素,并且该变量在存储器中用作存储单元中的标识对象。它可以有两种类型,全局变量和局部变量,其中...
  • 有时候我们期望网络能够看到全局,但是又要聚焦到重点信息上。比如在在做自然语言处理时,句子中的一个词往往不是独立的,和它上下文相关,但是和上下文中不同的词的相关性是不同的,所以我们在处理这个词时,在看到...
  • python 全局变量

    千次阅读 2020-12-10 23:06:00
    在讲原因之前,需要先知道python中变量的搜索顺序,这个顺序是 LGB (不考虑闭包情况)即local本地,global全局,builtin内建。比如:a = 1def test():a = 3print(a)test()函数内声明了局部变量 a ,在打印中使用,在...
  • 使用 Otsu 方法通过最小化类间方差。 输入: histogramCounts : 是图像的直方图数据,可以计算使用 `... 输出: ll : 是 [0 1] 中全局阈值的级别 例子: 考虑灰度图像是 Ig >> otsu(imhist(Ig),numel(Ig)) >> 04414
  • 针对嵌入式系统中大多数任务执行算法不考虑目标成本问题,提出了一种基于多目标全局约束的任务分配和调度算法。算法使用约束逻辑编程来对任务执行资源如处理单元、通信设备以及代码和数据存储量的使用进行多目标全局...
  • 全局运动分割方法和逐行扫描转换的应用 ...简介运动图像的表示仅考虑成像对象在屏幕平面上的二维投影,它提供了运动对象属性的中间描述,例如全局运动、区域形状、纹理、相对深度,覆盖关系,透明度和阴
  • 全局变量的优缺点及为什么要少用全局变量

    万次阅读 多人点赞 2019-03-27 22:06:58
    全局变量 对于程序员来说,是程序 “同步”的一种最方便的 方式,我相信大多数的程序员 刚开始都是使用全局变量来实现“同步”操作的,但是随着我们 编程理念的升华,我们会发现,原来全局变量不是我们想象的只有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 540,844
精华内容 216,337
热门标签
关键字:

从全局考虑