自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 three.js 地形法向量生成

上一节采用 分形算法生成地形的高度值, 接着我们需要生成每个顶点的法向量。three.js 的PlaneGeometry 自带有法向量, 法向量分为两种 即 平面法向量 和 平面每个定点法向量。因此一个n*n 块组成的平面, 有n*n 个平面法向量, 有4*n*n 个顶点法向量。这两种法向量区别是, 如果材质的shading属性是THREE.SmoothShading 则采用顶

2012-09-17 23:29:19 4919

原创 three.js 地形纹理混合

地形生成通常使用高度图, 而高度图的生成可以使用绘图工具,或者通过分形算法生成,例如square-diamond,  fbm方法。这里采用简单求平均值+随机波动的方法。对于一个2^n+1  *  2^n+1 的网格, 中心点的高度是四角点的平均值加随机偏移, 边上中点的高度值是边两端点的平均值加随机偏移。接着将偏移的幅度缩小, 计算四个较小方块的顶点的高度值。这样随

2012-09-17 21:58:21 3312

原创 three.js (四)离散层次细节level of details

LOD 处理比较大的外部地面场景中比较有用, 一般用于绘制地形。 首先通过可视体的切割删除不用的地形块,接着通过LOD 对照相机不同距离的地形块进行层次细节调整。这里采用最简单的LOD 方法。首先地形有n*n 的块构成, 这些块共同构成一个大平面;首先根据每个块到照相机的距离 计算细节层次, 例如假设由5*5 个块构成地形, 每个块1*1大小, 有4个细节层次, 当块距离照相机 小于2 层次 0距

2012-09-10 22:50:42 3513 5

原创 Three.js的绘制流程(三)----地形

最简单的地形是单一的平面, 这个通过var geo = new THREE.PlaneGeometry(2, 2, 256, 256) 几何体构建, 可以设定平面的切分块的数量。var pmesh = new THREE.Mesh(geo, material);可以为平面提供纹理, 从而是地面看起来更真实一些,而纹理坐标在geo中已经自动设定好了。 因此只需要写材质就可以了。这里使

2012-09-06 16:33:12 10595 1

原创 three.js绘制过程(二)

同一个场景中可以有多个摄像机,同一个屏幕缓冲区可以分块绘制不同的物体。WeblGLRender 中autoClear 设定为false之后, 每次绘制不会清空缓冲区;setSize 设定canvas的大小setViewport 设定绘制的位置的大小clear() 手动清空绘制缓冲区例如有两个摄像机A B;将autoClear设定为false,在绘制函数中

2012-08-30 23:57:17 2050

原创 Three.js WebGL 绘制流程(一)

Three.js 中3D 物体 都继承于 Object3D;而构造一个3D 物体 需要 提供两个对象 即Gemotry 几何体 和 Material 材质。Gemotry 中 vertices 决定定点的 列表, face 决定面的构成, faceVertexUv 决定 纹理坐标而Material 不同类型将会采用不同类型的shader 来绘制, 通过 设定Material 的

2012-08-17 10:24:49 3515 1

原创 OpenGL投影矩阵的构造

参考:http://www.songho.ca/opengl/gl_projectionmatrix.html3D空间中的对象,最终显示在屏幕上,需要进行一系列的矩阵变化,将其从世界空间,转化到屏幕上。坐标的具体转化过程是:世界坐标world---->视坐标eye-----》不同的投影方法(平行投影,透视投影)投影面上坐标--->正则坐标(将可视体转化成2*2*2的

2012-08-11 10:45:38 6869

原创 2012百度之星第二场初始题-1

问题描述:    给定n个正整数, 要求从这些正整数中 取出若干个, 对他们进行xor(异或)计算, 寻找可能产生的最大值。    xor运算有点类似于加法运算,但是它操作的是二进制的数字; 例如 101010 xor 111000 = 010010    ok解决任何问题,首先找出一些实际的例子, 例如在 集合 {5, 3} 中寻找;    首先写成2进制的形式:

2012-06-03 13:47:49 1979

原创 play paino

http://method-behind-the-music.com/piano#

2012-05-21 23:50:06 544

原创 建筑物占据的网格数目的确定(三)

前面讲了如何处理拼接菱形的冲突问题, 一个建筑物的底座就是一个拼接菱形,如何得到一个图形的底座呢?一个有底座的图形的特点是什么?假设一个建筑物的底座的大小是2*2那么这个图片底座中心距离下方的高度就是 2*sizeX  左右的宽度就是4*sizeX这样可以把标准底座放置在这个位置如果效果合适则 证明建筑物大小合适,如果不对,那么如何修正?1:缩放底座, 使图片的距离

2012-05-21 17:03:50 660

原创 拼接菱形的冲突判定方法(二)

上次我尝试 从 坐标轴映射, 或者说是数学分析的方法判定冲突, 但是很难做到, 因为 难以计算点在仿射坐标系的投影, 并且也有一定精度问题下面采用 离散的方式:首先对于一个拼接菱形的话, 如果我们假设它的位置是离散化的, 如下图:只能允许菱形和菱形之间的边是对齐的,而不能出现有错位的情况如何避免这种情况呢, 有一种方法:我们可以把整个背景离散化, 根

2012-05-20 14:11:49 868

原创 使用python验证想法

python可以避免去思考一些细节, 专注于逻辑的实现; 能够快速验证;专注于要解决的问题, 这样在实现的时候能够发现问题的关键点是什么; 确定不同情况下的行为具体是什么例如:求C(m, n)组合枚举, 关键点是区分 空集 和 包含空集的几何C(m, n) m C(m, 0) 得到一个包含空集的集合例如 判定 菱形拼接相交的问题:关键点是: 准确

2012-05-13 21:56:41 509

原创 经营类游戏:由轴对齐矩形相交判定到判定菱形构成的平行四边形相交判定(一)

普通多边形之间的相交测试是个复杂的问题,我们只考虑 轴对齐的 菱形问题即菱形的对角线和坐标轴平行的相交问题。和坐标轴平行的矩形的相交问题:矩形A B由左上角定点和右下角定点描述, x轴正方向右, y正方向 向下。             图1设:A的左上定点 x0y0, 右下 x1 y1    B 左上 x2 y2  右下 x3 y3二维问题一般降维度处理:有 如果

2012-05-13 15:08:22 928

原创 证明两个集合的划分最小绝对值差问题

总的 解空间的大小 是 C(2n, n)/2  =  2n!/(n!*n!)/2从2n个元素中取出n个元素的组合数目,  又由于对称性 , 所以除以2例如: 1234 ---》 取出两个元素的组合:  12  13 14 23 24 34 分成两个集合的可能性是: (12, 34), (13, 24), (14, 23)生成组合的程序:n = 4p = ra

2012-05-12 11:09:10 1399

原创 utf8编码

utf8编码关于编码问题:首先需要知道什么是编码为什么要编码, 计算机只能存储一个字节一个字节的二进制信息,所以需要把人可读的这些文字用唯一的方式在计算机内部表示出来, 但是表示的方法不唯一;例如英文字符 就那么点 所以一个字节 也就是 8个二进制位就能给所有的进行编码,最多能给256个符号编码; 但是ASCII 编码实际只使用了 7位 所以最多编码 128个字

2012-05-10 23:09:16 4299 1

原创 gimp的python控制台以及python的PIL图像处理库

ok做游戏 最希望 美工把所有的图处理的很完美, 这样 程序就可以简单的贴了, 事实上不可能啊~~首先他不了解你的需求, 其次你也未必能把自己的程序相关的需求 让对方明白, 再次 贴图的方法有时更多的是靠想像力的~人物图片: 一个左右方向的任务图片手里拿着武器, 通常希望给的图片 基于人物的对称轴对称; 这个通常需要加宽图片 ,在一侧添加上空白部分;python的PIL库中

2012-05-10 16:03:42 3342

原创 extern "c" 动态链接库符号表导出问题 以及函数参数压栈顺序

c语言编译的动态链接库中,导出的符号名字就是 源代码中的相应的名字;例如函数 void test(){} 导出的符号名字 就是 test但是对于c++ 来讲不是这样, c++ 有类, 名字空间, 函数重载, 导致多个不同的对象可能使用一个相同的名字, 这样必须由编译器来生成全局的唯一名字; 这种生成的方式 没有标准化, 所以 window上的vc 编译器可能生成一种名字,

2012-05-09 21:48:43 4295

原创 linux-32位汇编

; nasm  -f ;ld -s -o ;gcc -Wall -nostdlib -s objBITS 32GLOBAL _startSECTION .text_start:      mov  eax, 1      mov ebx, 42      int 0x80nasm -f elf fileld -s -o hello

2012-03-16 00:19:59 742

原创 Raycast实现伪3d游戏(HTML5) (一)

http://dev.opera.com/articles/view/creating-pseudo-3d-games-with-html-5-can-1/参考此文~纯粹的3d世界的够在现在已经非常的成熟了, 就是各种乱七八糟的技术非常之多,难免让人摸不着头脑。那ok, 可以回到远古时代,追寻一些简单的方法,去实现一些simple的东西,毕竟这个世界的构造总是从simple到复

2012-03-15 16:28:00 2097 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除