Bumped Map And Normal Map】的更多相关文章

http://freespace.virgin.net/hugo.elias/graphics/x_polybm.htm 先留着,准备以后开垦…
转自:http://www.cnblogs.com/cxrs/archive/2009/11/01/1594155.html Nvidia和ATI都有相应的工具把Heightmap转成NormalMap,有了NormalMap,我们就可以用NormalMapping技术进行Per Pixel Lighting计算了.那么HeightMap是怎么转化成NormalMap的呢?      其实并不难,在<3D游戏与计算机图形学方法>中,提供了一种由高度图生成法向图的方法.其思想是根据高度图中的象素…
Normal map : Normal map (法线贴图) 它的作用是模拟出高模上的一些细节纹理,特别是将高模上的圆滑和粗糙度投射到低模上,让低模也有高模的效果. 因为高模的面数非常多,导入引擎后电脑是跑不动的,所以用低模加上法线贴图就能很好的解决这个问题. 上图是没有用 Normal map (法线贴图)时的效果. 下图是用了 Normal map (法线贴图)后的效果. Diffuse map: Diffuse map(色彩贴图)它的作用是给模型上颜色和材质. 上图是没有用 Diffuse…
转自:http://www.zwqxin.com/archives/shaderglsl/review-normal-map-bump-map.htmlNormal Map法线贴图,想必每个学习计算机图形学的人都不陌生.今天在这里按我的理解总结一下,作为复习,也作为深入学习吧.——ZwqXin.com自从看完那本<数学在计算机图形学上的应用>后,一直想好好地真正实践一次法线贴图/凹凸贴图呢(以前是根据橙书弄了一下罢了).昨天偶尔看到篇涉及BumpMap的文,正好觉得是个机会,便在网上狂找相关资…
  - Normal Map中的值 -   有没有想过,Normal Map(法线贴图)为什么看上去都是“偏蓝色”的?这是因为,在map中存储的值都是在Tangent Space(切空间)下的.比如,一根正好垂直于表面的法线向量在切空间下是(0,0,1),假如用一个char(注意不是unsigned char)来表达像素的话,该向量就会被转换为(0,0,127).这样的值无疑是“蓝色”.由于大部分的法线都不会偏移这根“标准法线”太远(比如[0.1, 0.2, 0.8]...)所以大部分像素都是“…
学习资料: http://www.sikiedu.com/course/37/task/456/show# http://www.sikiedu.com/course/37/task/458/show# 为何要用法线贴图 为了提升模型表现细节而又不增加性能消耗,所以不选择提高模型的面数,而是给模型的材质Shader中使用上法线贴图(Normal Map),通过更改模型上的点的法线方向,增加光影凹凸效果,从而提升模型表现细节.使用法线贴图能使一个三角面(平面)表现出凹凸的视觉效果! 法线贴图原理…
原文出处 https://www.cnblogs.com/lookof/p/3509970.html - Normal Map中的值 -   有没有想过,Normal Map(法线贴图)为什么看上去都是“偏蓝色”的?这是因为,在map中存储的值都是在Tangent Space(切空间)下的.比如,一根正好垂直于表面的法线向量在切空间下是(0,0,1),假如用一个char(注意不是unsigned char)来表达像素的话,该向量就会被转换为(0,0,127).这样的值无疑是“蓝色”.由于大部分的…
Collection接口之前接触过,每次保存的对象是一个对象,但是在map中保存的是一对对象,是以key->value形式保存的. 定义: public interface Map<K,V> Map.Entry接口. 定义: public static interface Map.Entry<K,V> 常用方法: Map与Map.Entry关系: 常用子类: 以HashMap为例说明基本操作方法:put()增加内容,get()取出内容. 根据键取出内容. map.get(&q…
Map java中的map 如何修改Map中的对应元素 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象.         Map的接口         Map---实现Map         Map.Entry--Map的内部类,描述Map中的按键/数值对.         SortedMap---扩展Map,使按键保持升序排列             关于怎么使用,一般是选择Map的子类,而不直接用Map类.         下面以HashMap为例.…
第一题 (Map)利用Map,完成下面的功能: 从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪支球队.如果该 年没有举办世界杯,则输出:没有举办世界杯. 附:世界杯冠军以及对应的夺冠年份,请参考本章附录. 附录 历届世界杯冠军 届数 举办年份 举办地点 冠军 第一届 1930年 乌拉圭 乌拉圭 第二届 1934年 意大利 意大利 第三届 1938年 法国 意大利 第四届 1950年 巴西 乌拉圭 第五届 1954年 瑞士 西德 第六届 1958年 瑞典 巴西 第七届 1962年…
源网址: http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这个例子在遍历Map时用到了Map.Entry 和 Map.entrySet() ,记得只见过Map.KeySet()和values()这两个方法,于是到API中一看,Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是一个接口…
一.Map<String,Object> String:key的类型 Object:value的类型,value可能是String,或者int类型,什么类型都可以 对于Map接口来说,本身不能直接迭代输出,因为Map的每个位置存放的是一对值(key,value),迭代每次只能输出一个值 需要先取到key的集合,再根据key迭代输出value 迭代方法: 1.foreach public static void main(String[] args) { String a="aaa&q…
Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) 添加.删除操作: Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像.如果该关键字已经存在,那么与此关键字相关的新值将取代旧值.方法返回关键字的旧值,如果关键字原先并不存在,则返回null Object remove(Object…
1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对  思路:  A: 获取所有结婚证的集合  B: 遍历结婚证的集合,得到每一个结婚证  C: 根据结婚证获取丈夫和妻子 转换:  A: 获取所有键值对对象的集合  B: 遍历键值对对象的集合,得到每一个键值对对象  C: 根据键值对对象获取键和值 2. 代码示例: package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.ut…
1. Map集合的遍历  Map -- 夫妻对 思路:  A:把所有的丈夫给集中起来.  B:遍历丈夫的集合,获取得到每一个丈夫.  C:让丈夫去找自己的妻子.  转换:  A:获取所有的键  B:遍历键的集合,获取得到每一个键  C:根据键去找值 2. 代码示例: package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapDemo3 {…
1. Map集合的功能概述 (1)添加功能 V put(K key,V value):添加元素.这个其实还有另一个功能?先不告诉你,等会讲 如果键是第一次存储,就直接存储元素,返回null 如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值 (2)删除功能 void clear():移除所有的键值对元素 V remove(Object key):根据键删除键值对元素,并把值返回 (3)判断功能 boolean containsKey(Object key):判断集合是否包含指定的键 bo…
转自: http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这个例子在遍历Map时用到了Map.Entry 和 Map.entrySet() ,记得只见过Map.KeySet()和values()这两个方法,于是到API中一看,Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是一个接口,…
package cn.good.com; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* * 一. Map 接口? * * 1.map接口中 键和值----叫做映射. * 2.给定一个键,一个值.存储在Map对象之后,通过键来获取!键不可以重复.值可以重复1 * 3.访问的值不存在,抛出异常NoSuchElementException异常! *…
import java.util.HashMap;import java.util.Iterator;import java.util.Set;import java.util.Map.Entry; public class MapDome {  //  Map 嵌套存储Map //      aaa //        java班 //          001 郭嘉 //          002 神郭嘉 //        javahoodp班 //          001 黄月英 //…
在昨天研究了发布CXF发布webservice之后想着将以前的项目发布webservice接口,可是怎么也发布不起来,服务启动失败,原来是自己的接口有返回值类型是Map. 研究了一番之后,发现: webService可以处理Java 数据类型.JavaBean.List等,但是却不能处理Map数据类型,也不能返回List<Map>类型数据.于是做了两个研究: 1.发布返回值类型是Map<String,Object>类型接口 在发布的时候竟然神奇般的发布成功了,接口如下: 接口: p…
调试程序的时候,为了打印map中的内容 ,直接 使用seelog 的方法打印 map中的内容到日志,结果出现 “concurrent map read and map write”的错误,导致程序异常退出,后来将代码注释后恢复正常.猜想了下是log 打印属于写操作,取出map内容的时候属于读操作,log记录的时候产生lock引发异常. 具体细节就没研究,先mark下.…
众所周知,大家在微信开发工程中,由于微信开发文档中,对于消息的接收发送都是基础xml数据的(太坑了),所以我们需要对XML进行解析转换: 1.我们先引入所需要的依赖 dom4j (解析xml的),xstream(可以将对象,以及复杂对象转换为xml); <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</vers…
import java.util.LinkedList; import java.util.*; import java.util.ListIterator; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class a11111111 { public static void main(String[] args) { JSONObject obj=new JSONObject(); obj.put("n…
mybatis异常:Could not find result map Java.util.Map 问题分析及解决 报这个错误呢,很难受的就是你定位不到具体的地方,找不到位置修改,你只知道有错误,但是你不确定具体是哪里 . 我个人建议是全局搜索. 错误写法  <select id="queryXXXCount" resultMap="java.util.Map" > mybatis报出的异常日志:org.apache.ibatis.builder.Inc…
复制Map对象:Map.putAll方法 Map.putAll方法可以追加另一个Map对象到当前Map集合 package xmu.sxl; import java.util.HashMap; import java.util.Map; public class copyMap { public static void main(String[] args) { // TODO Auto-generated method stub Map<String, String> map1 = new…
条目二十四<当效率至关重要时,请在map::operator[]与map::insert之间谨慎做出选择> 当效率至关重要时,应该在map::operator[]和map::insert之间仔细做出选择.如果要更新一个已有的映射表元素,则应该优先选择operator[]:但如果要添加一个新的元素,那么最好还是选择insert. 下面来分析为什么是这样子的. 首先先说明,下面两个式子是等价的: map<int, int> ss; ss[1]=2 //式子1 ss.insert(pai…
1.EL表达式 获取list长度 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <c:if test="${fn:length(list名字)>1}"&…
Map.entry是Java中的一个接口.每一个Map.entry代表一个map对象. 可以通过 Map是java中的接口,Map.Entry是Map的一个内部接口,它表示map中的一个实体(及一个key-value对). map提供了一些方法如entrySet()返回值entry实体的set集合 Set<Map.Entry<K,V>>:keySet()返回值key的set集合 Set<K> 常用用来遍历map中的key和遍历map中的实体的方法为: Map<St…
package com; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; public class Com { /** * @param args */ @SuppressWarnings({ "rawtypes", &q…
1.Map.Entry 和 Map.entrySet()分别是什么?  Map.entrySet():根据名字便可知道,这是一个集合,是一个映射项的set. Map.Entry<k,v>:是一个接口,表示的是一个映射项(包含key和value).这个接口有getKey()和getValue()方法. 所以,两者之间的关系就是: Map.entrySet()这个集合里面是 一个个的Map.Entry<k,v>.现在再看这两个名字也就更好理解了. 2.如何利用他们遍历map? pack…