中文 顶点,最高点,头顶
英文 编辑
vertex: [ və:teks ]
n. 顶点,最高点,头顶
2 宿命点 编辑
宿命点与反宿命点的宫位能提示我们会在哪里经历人生的转折,在哪里遇到命运中的定数与宿命。就像之前提到的,宿命点一般落在星盘的西边,第五到第八宫之间,与反宿命点成 180 度对等。
宿命点落在第五 / 十一宫头,一般指会与朋友或者在所处团体(十一宫)中遭遇到一段宿命性的情感或创造性的经历(五宫)。
宿命点落在第六 / 十二宫头,意味着转折点,或者拖延点,能够影响到我们日常的生活,或者意味着通过帮助那些弱势群体,或者通过做白日梦或者幻想来连接我们的灵魂与肉体。
宿命点落在第七 / 一宫头,突然出现的事件能从根本上影响自己重要的社会关系。
宿命点落在第八宫头,宿命的感觉可能性爱的,或者渴望体验快乐,安全,平和,(第二宫)
宿命点与反宿命点所在的星座,表示我们体验这个轴力量的方式。
白羊-天秤 分享或者个人独享问题,
金牛-天蝎 关于安全与冒险的问题
双子-射手 知识与先知对比
巨蟹-摩羯 强调的是保守与进取心
狮子-宝瓶 自我的表达与群体分享的对立
处女-双鱼 约束性与无限的渴望之间的对比
3 宿命点落在十二星座的意义 编辑
Vertex in Aries
宿命点落白羊
你尝试扛起领导的担子,开创新的方向,选择决定性的立场,克服一些禁制,活化个人的魄力,学习勇气,及征服恐惧。(好吧,就是一战神...)
干这些东西会令你满足。这可以挑战你领导的能力,解决困难的能力或创新的能力。而且可以把这些能力由你的无意识间带出来。你会察觉到个人的勇气及自我认同。
达不到以上种种或许会把这种进取心放到他人手上,又或者你会觉得不被满足,因为你妥协,或是堕落而成为一个平庸的人。亦可能是你会发展出一个人格夹缝,因为你心理上地在损害复合个性。
Vertex in Taurus
宿命点落金牛
你被期待去完成一些已预设的行动。其它人期待你变得自立自给,处理一些安全性的问题,及某程度上支持艺术。他们期待你去以一个物质的层面去应付这个世界。
实现这些或许要为一些剧烈的感情或是物质缺口创造一些解决方法。你对别人的信赖会成长,并处理自己的事务。
不干这些令你觉得极自傲的事情会令你难以获得自尊。你或者会觉得是一些社会责任或是感情上的债务。
Vertex in Gemini
宿命点落双子
被期待用你的天赋去杰出地沟通或写作,然后用些骨干的事实阐明现状。人们期待你想到新的点子并清晰地呈现,说,写或指令,辩论你的见解,并取得一席位成为一位演讲者。
干这些事情或者会令你想点子的能力更加进步,因为你学着细心的选择你的词汇去把事实表达出来。你也能获得一种舒服的表达方式,因为你拥有交际的技巧和保持年轻的好奇心。简而言之,面对检验你能准备妥当。
不发展这些技巧会使你允许自己去概括或思想行动发生突然的改变,失去目标。你可能会逃避探索,难以在精神上适应和清晰,或者你可能会阻断在一个简单的目标上而不能发展你所需要的多样性。
Vertex in Cancer
宿命点落巨蟹
你被期望处理人民或大众的利益,在工作中操纵感情因素,学习树立女性或公众形象。人们能发现你的才能,接受你的背景或父母的角色,承认你本性中的情感方面。
做这些事也许能帮助提高你的素质和认识到自己在生活中依赖的需要如合法婚姻的忧虑。你可能还会发现拥有担当父母角色的能力。
不能完成这些事将使你仁慈地对待别人的情感。认为你使他们失望的人会把形势变得扭曲和分歧。你也许还会放弃引诱,抑制你的情感。
Vertex in Leo
宿命点落狮子
你被期待变成一个个体而非团队的成员,在特殊的关系中突出你的个人情感而非保持情感的分离。人们期待你成为教育工作的负责人,从事娱乐项目,或者关于年轻人或孩子们的工作。你应该承认和接受你对赞赏的需要。
完成这些事,你可能形成自己个性的意识或有创意的表达方式。你对自己慈爱、创意方面给予外部的表达。你用帮助他人发展来强化自己的自尊,你通过你的个人魅力和尊严向周围的人灌输信心和个人价值。
不能完成这些任务将导致你精神上严重的尊严混乱或内心出现分歧。你会遭遇那些跟你一样没有人情味的待遇。
Vertex in Virgo
宿命点落处女
你被希望用你实际的洞察力和你的能力去发现缺点。人们希望你提供帮助,编写实用的材料,和提供工作细节。你会提高你的辨别能力,成为一个有用的有成效的社会成员,培养小心谨慎的习惯和接受批评的能力。
做这些事也许使你感到对世界有用,和抵消对自己健康的担忧。你还学会相信自身价值,不顾他人如何评价。最后,你能够在最能胜任的层次起作用,了解到你生命的意义。
不做这些将带来内心的分歧,因为你屈服于模糊不清。你会把自己隐藏起来。你还会出现生活失调和无用的感觉。
Vertex in Libra
宿命点落天秤
你被期待把相对的集团聚合起来,在一个公正的基础上进行劝告和仲裁,或者寻求一种令人满意的妥协方式。你也会提倡合作精神和公平的游戏方式去帮助自己及他人共同进步。面对复杂的迫害导致的内部分歧你会变得冷静。你会借以创造内部平衡及避免没理由的社会要求而与他人平等和睦的相处。你期望培养一种公正和妥协的艺术。
完成这些任务可以帮助你在与人合股中放下自负。你也会学习以公正的感觉与他人相处。最后,你学习怎样接受在你的私人生活和环境中所需的平衡。
不这样做的结果就是使你陷入产生有偏见评价的情况中,并且加之于你的虚荣心。你会以自我为中心而变得费劲,加深了关系中的压抑。然后你会陷入优柔寡断和迟钝中。
Vertex in Scorpio
宿命点落天蝎
你被期待着学习完全的自我控制。你将探索你欲望的限度,对界限的定义不仅在于自身条件,而且在于他人权利的要求以外。你将用相互的财政观点帮助别人做策划。你也许要处理有关死亡、治疗,实践对过时品的改良或回收。你也许会对提高合股的安全性提供明确的帮助,为了使视角尖锐而用形而上学认识自己,获得一种共同价值的感受。你可能还会在认知中产生前卫的超自然的理解。
通过做这些事,你可能会觉得每次在本性的欲望检验下,内在感情需要改良、回收、或者寻找个人重生。然后你获得在重生或更高领域的痊愈力的成长,你自身也得到了更高层次的复活。你可能会卷入工作的争端去获得别人的支持。
如果你不能完成这些目标,你将屈身于对他人的物质欲望,在内心产生怒火般的愤恨。结果,你也许会感到分歧和情感上的不安。
Vertex in Sagittarius
宿命点落射手
你被期待有广阔的视野,对事实背后的意义有一个较深刻的认识。你可能会显露出一种新的宗教意识或一种对事物的哲学观点。你会变得对探求高层次真理感兴趣。你可能会走向或得到关于法律原则的高等教育,讲授关于宗教或哲学的课,编辑,推销,或者对困难形势的理解力。
做这些事可以帮助提高你的自信,你的能力和生活目标。你将学会的是,对自己的信任必定来自于对外界事物的信任。
不能完成你的任务可能会驱使你在没有回顾过去历史怎样实际的影响着人们的前提下去接受一种法律或准则。你将觉得难以接受你所获得的赞扬和奖励,取而代之的是,在生活中无目的的漂泊。
Vertex in Capricorn
宿命点落魔羯
你被希望接受承担任务和责任的事实,你做好准备安置巨大的责任。你需要接受局限和勤奋去克服他们。你将认识到你被迫发展组织的能力、小心、谨慎和耐性。你可能在没有人想要的处境中管理一间事务所。你需要接受限制因素,不管它们来自自身或外界。
完成这些目标将使你意识到组织能力的重要性。你还将在斗争和约束中净化自己。
没有完成这些任务将使你由于表面上的不可靠、不稳定或错误,妨碍了提升自己职位的机会。你可能宣称缺乏必要时机的原因是家庭的体贴。如果你把自己看作是不稳定环境的受害者,你会体验内心的分歧。你还会由于缺乏纪律而对能力低的人有微妙的感觉。
Vertex in Aquarius
宿命点落水瓶
你被期望与各类人一起,即便是你感觉不能忍受。人们希望你建立足够的公正去提升个人的一些小事,因此你将你的同龄人视为“兄弟”而非陌生人。你摆脱同龄人群体的压力,通过发展真正的个性来成长。你需要接受你是群众中一员的意见。
做这些事可以帮助你避免感觉到优越性。作为一个朋友,你并不是非重要的事不能打扰的人。你将学会克服自己的自尊。
不完成以上的任务也许代表你变成对自己有偏见的任何人都没有耐性对待。你将会被那些你所抵制所阻碍,简单的因为它们拒绝创造你所需要的将来的开端。成就变得没有意义,而改造世界的失败撞击力出乎你的意料。
Vertex in Pisces
宿命点落双鱼
你被期望显露出无私和培养情感或心理的洞察,而不是来自于自身本能的现实和物质见识。人们希望你显示出同情和倾听内心受伤的人们倾诉的能力,简单的需要知道有他人的关心。你可能会决定从事分娩、公共机构、或者幕后工作。你将会需要接受的事实是,我们是宇宙的孩子,存在是为了传达无穷的爱的理想和纯洁的兄弟之情的美好。
如果你完成以上的任务,你将会与被你帮助过的人联系并获得成长。你将通过实际考虑的过程中增长见识,你会认识到,你基本上稳固的把握了对事情的计划。
不这样做你会回到自身,只是重新发现那些你已知道的东西。这些会产生对无效用的感觉,导致失望及自我毁灭。
如何用java 5分钟实现一个最简单的mysql代理服务器首先,准备开发工具套件,我们并不会引入过多工具包,仅仅需要:
java8
vert.x 3
如果你是用maven做为项目管理工具,请将vert.x 3引入:
1
2
3
4
5
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>3.3.2</version>
</dependency>
代码实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package
com.maxleap.mysqlproxy
import
io.vertx.core.AbstractVerticle
import
io.vertx.core.Vertx
import
io.vertx.core.logging.Logger
import
io.vertx.core.logging.LoggerFactory
import
io.vertx.core.net.NetClient
import
io.vertx.core.net.NetServer
import
io.vertx.core.net.NetSocket
/**
*
@author sneaky
*
@since 1.0.0
*/
public
class
MysqlProxyServer
{
private
static
final
Logger
logger
=
LoggerFactory.getLogger(MysqlProxyServer.class)
public
static
void
main(String[]
args)
{
Vertx.vertx().deployVerticle(new
MysqlProxyServerVerticle())
}
public
static
class
MysqlProxyServerVerticle
extends
AbstractVerticle
{
private
final
int
port
=
3306
private
final
String
mysqlHost
=
"10.10.0.6"
@Override
public
void
start()
throws
Exception
{
NetServer
netServer
=
vertx.createNetServer()//创建代理服务器
NetClient
netClient
=
vertx.createNetClient()//创建连接mysql客户端
netServer.connectHandler(socket
->
netClient.connect(port,
mysqlHost,
result
->
{
//响应来自客户端的连接请求,成功之后,在建立一个与目标mysql服务器的连接
if
(result.succeeded())
{
//与目标mysql服务器成功连接连接之后,创造一个MysqlProxyConnection对象,并执行代理方法
new
MysqlProxyConnection(socket,
result.result()).proxy()
从Cocos 2d-x 3.0起我们已经可以在游戏中使用3D元素。Cocos引擎推出3D功能的时间不算太迟,我们已经可以看到越来越多的手机上能流畅地渲染3D游戏,而且这些机型正在成为主流。在最近两年我们可以看到,高端手机游戏从2D转到3D的倾向很明显。许多游戏开发商试图在竞争激烈的红海里占有一席之地,那么选择开发3D游戏或许会是一个强有力的竞争手段。上面的视频是我的下一款游戏作品《Food of the Gods》。这游戏使用了Cocos 2d-x 3.3,视频是从我iPhone上录制的实际运行效果。在这篇文章里我将要介绍我是如何制作它、如何把它跑在cocos引擎上的。对于熟悉cocos官方提供的3D示例游戏 《Fantasy Warrior》的开发者,将会看到以下一些主要不同点:
1. 光照贴图(Light Mapping):你将看到每件物体都有被照亮并且投射阴影。光影效果的质量是由你的3D工具软件决定的,用3D软件能烘焙出复杂的光效,包括直接光照,反射光照,以及阴影。
2. 顶点合并(Vertex Blending):请注意看路、草地和悬崖交接的地方,看不到任何可见的接缝。
3. 透明遮罩(Alpha Masks):灌木如果没有透明遮罩就跟纸片一样。
4. 滤色叠加的公告板(Billboards):增加一些光束和其他环境的效果。
所有的模型都是用一个叫Modo的3D 软件建模制作的,贴图则是使用Photoshop。关于3D模型的制作和贴图的绘制在此就不再赘述,网上已经有很多教程,在此主要介绍下跟Cocos 2d-x有关的部分。
模型网格和贴图(Meshes and Textures)
如下图所示,每个模型的贴图都是由几个256 x 256或者更小的贴图组成的。同时你也会注意到我把所有的小图片都合在了一张贴图上,这是减少GPU绘制次数(draw call)最简单的方法之一。贴图是从http://www.cgtextures.com 或者网上找的。
为了把这些图片拼接起来,我使用的是Photoshop的补偿滤镜(offset filter)然后在接缝的地方用修复画笔来做一些自然的过渡。为了获得一种油画的视觉效果我会先使用cutout滤镜(注意:cutout滤镜也会使得png格式图片的压缩效果更好),然后在需要的地方绘制一些高光和阴影的效果。我发现如果直接拿照片当贴图的话,当你把它尺寸缩小的时候会出现图像噪点。
另一种方案是为每一个模型网格制作一整张独立的贴图。当网格比较小或者摄像机不是很靠近网格的时候这种方法是可行的。如果你的photoshop技术过硬的话,出来的效果会更好。附带的好处是,因为只使用一张贴图因此只有一次GPU绘制调用。但我不建议采用这种方法来制作第一人称射击游戏(FPS)中的建筑,因为当你走得很靠近建筑物的时候,贴图分辨率过低的问题就会显露出来。我不喜欢用这种整张贴图方法,因为这实在太费时耗力了。这个场景的制作花了我足足四天时间。
光照贴图(Light Maps)
当你做好模型和贴图之后,现在就可以来烘焙光照贴图了。Cocos 2d-x目前还不像Unreal或Unity一样在官方编辑器里提供烘焙光照贴图的功能,但是别失望,大部分的制作3D模型的软件都可以烘焙光照贴图,并且效果比市面上任何游戏引擎的效果还好。首先,在你的3D工具软件里,先给场景打好灯光,照亮场景,然后为每份网格制作第二张UV map。每份网格的表面都必须被映射在0到1范围内的UV 平面上。这听起来好像很复杂且耗时,但在Modo里这是非常简单的。我先后使用 “Atlas map”的UV 工具和“Pack UV”工具,这两个工具会自动将网格展开成一个相当不错的排布图。
这些都完成之后,设置3D工具软件的渲染器为“只渲染烘焙的光照”,然后开始渲染。当然了,如果你想做一些环境光遮罩的效果也是可以的。
你也可以使用一些分辨率较低的光照贴图。有时候这样的效果反而会看起来更好,因为相互混叠的模糊像素会让阴影看起来更柔和。上面的这些建筑都映射到一张512 x 512的光照贴图上。整个场景总共使用了4 张512 x 512的光照贴图。请确保每个小图块之间有一定的空隙,且让你的渲染范围比这些图块的边界多出几个像素。这样可以防止当较低的mip-maps(一种纹理采样)起作用时黑边出现在网格周围的角落里。
最后一点听起来像是3D技术的行话。如果是对Texture Packer熟悉的话,那么其中的“Extrude”值起到的作用就是刚刚我所描述的。对贴图的边缘接缝做一些涂抹处理,这样在精灵之间就不会有那些烦人的缝隙了,那些缝隙在这里会变成多边形边缘的黑边。
如果你想牺牲内存和包大小来提高性能的话,你可以把颜色和光照信息都烘焙到一张贴图上并避免共同使用一张光照贴图。但是这样做的话,同样的像素密度,贴图的大小至少得翻一倍。这完全取决于你个人、以及你游戏的要求。
接下来,添加顶点颜色。我在地形上提供了顶点颜色,这可以让着色器在合成悬崖顶上的草地贴图时,不会有任何可见的接缝。下图中涂成白色的顶点部分可以合成你指定的贴图。在这个例子里实际上我只使用红色通道,当然了根据实际需要你可以使用4个通道(RGBA)去合成不同的贴图。
最后,我把整个场景分成了很多独立的网格(mesh):每个建筑都有自己独立的网格,地形独立一个网格,水也是独立一个。带透明遮罩的贴图也会有一个网格——比如视频中看到的植物叶子和小旗子。我这样做有两个原因,首先,让地形、建筑、水和带透明遮罩的贴图各自使用不同的着色器。其次,我们打算通过不渲染摄像机范围外的对象来减少性能开支。很重要的一点是摄像机会根据网格的包围盒来决定对象是否可见,因此尽量把网格弄成小块,这样包围盒会比较小。
导出
完成了模型和贴图之后,我们需要把每个mesh导出为一个.fbx文件。幸运的是,大多数的3D建模软件都支持这个功能。Autodesk为此格式提供了一个免费SDK。但不幸的是,Modo 701在导出fbx格式时会出现相当多的错误。因此我必须自己写一些脚本来保证第二组贴图坐标和顶点颜色的正确导出。你可以从我个人网站上的“Modo Scripts”部分下载这个导出脚本。搞定fbx之后,你将需要用到Cocos 2d-x自带的fbx-conv.exe命令行工具,它位于Cocos 2d-x根目录的/tools下。
fbx-conv.exe -a your_mesh_name_here.fbx
使用“-a”参数后,工具会同时导出mesh的二进制文件(.c3b)和文本格式文件(.c3t)。文本格式的文件非常的有用,你可以利用它来查看所有的东西是否被正确导出,但千万不要把它放到resource目录下。如果所有的都被正确地导出的话,你将在c3t文件的开头看到以下的内容:
“attributes”: [{
“size”: 3,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_POSITION”
}, {
“size”: 3,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_NORMAL”
}, {
“size”: 2,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_TEX_COORD”
}, {
“size”: 2,
“type”: “GL_FLOAT”,
“attribute”: “VERTEX_ATTRIB_TEX_COORD1″
}]
注意VERTEX_ATTRIB_TEX_COORD1这个属性。如果没有它光照贴图将无法显示。如果你导出了一张带顶点颜色的mesh,你也应该要看到一个类似的属性才行。还有一点很重要,贴图的坐标也必须按正确的顺序才行。我通常采用的是第一个tex_coord是瓦片贴图,最后一个tex_coord是光照贴图。使用Modo的话,uv maps会按照字母顺序排列。
着色器(Shaders)
我花了很长的一段时间来搞懂GLSL和着色器,但正如编程中经常遇到的,有时候一个点通了,其他的就都好理解了。一旦理解了其中的原理,你便会发现着色器真的很简单。如果你不只是想用Cocos 2d-x来把贴图套到模型网格上的话,你需要学会如何写着色器。目前Cocos 2d-x没有Unreal那样好用的着色器可视化编辑器(visual shader editor),所以我们只能自己动手焊代码。
本节我将讲解我为视频中的游戏场景所写的着色器,并说明我做了什么、为什么这样做。如果你对着色器已经非常熟悉了,那么可以快速跳过本节。
首先,先来看一下如何将着色器应用到模型网格上。
这段代码摘自Cocos 2d-x的测试集cpp-tests工程。如果你用不同的着色器来加载大量的meshes,那么最好根据功能来进行,这样可以避免冗余。那么现在我们只关心如下的代码段,来看下这个着色器。
GLProgram* shader =GLProgram::createWithFilenames(“shaders/lightmap1.vert”,”shaders/lightmap2.frag”)
GLProgramState* state = GLProgramState::create(shader)
mesh->setGLProgramState(state)
Texture2D* lightmap =Director::getInstance()->getTextureCache()->addImage(“lightmap.png”)
state->setUniformTexture(“lightmap”,lightmap)
“lightmap1.vert”是顶点着色器(vertex shader)。如果将其应用到网格上,那么每个顶点的每一帧都将执行这个操作。而“lightmap2.frag”是片段着色器(fragment shader),网格上贴图的每个像素的每一帧都将执行这个操作。我不太确定为什么将其命名为“片段着色器”,我一直认为应叫做“像素”着色器(pixel shader)。从这段描述,我们可以很容易理解为什么大量着色器指令会降低帧率,尤其是你用片段着色器的话。
接下来我们详细地分解顶点着色器:
attribute vec4 a_position
attribute vec2 a_texCoord
attribute vec2 a_texCoord1
这些属性是由渲染器提供的。“a_position”是顶点的位置。“a_texCoord” 和 “a_texCoord1”对应你那两个UV坐标。还记得在.cbt文本格式文件中开头部分的“VERTEX_ATTRIB_TEX_COORD”么?这些值与属性对应起来了。你可以在渲染器中获取更多其他的属性,包括顶点法线(vertexnormal)和顶点颜色(vertex color)。请在cocos引擎的CCGLProgram.cpp中查看完整属性列表。
varying vec2 v_texture_coord
varying vec2 v_texture_coord1
“varying”值将被传到片段着色器中(fragment shader)。片段着色器所需要的任何变量前都需要添加“varying”限定符。这个例子中,我们仅需要知道这两个贴图的坐标。
void main(void)
{
gl_Position = CC_MVPMatrix * a_position
v_texture_coord.x = a_texCoord.x
v_texture_coord.y = (1.0 – a_texCoord.y)
v_texture_coord1.x = a_texCoord1.x
v_texture_coord1.y = (1.0 – a_texCoord1.y)
}
设置顶点位置,拷贝贴图的坐标给varying values,这样片段着色器就可以使用这些值。现在我们一起来分解片段着色器。
#ifdef GL_ES
varying mediump vec2 v_texture_coord
varying mediump vec2 v_texture_coord1
#else
varying vec2 v_texture_coord
varying vec2 v_texture_coord1
#endif
声明从顶点着色器传递过来的“varying” 值
uniform sampler2D lightmap
还记得在将着色器应用到网格时所使用的 state->setUniformTexture(“lightmap“,light map)语句么?这个值就是对应语句中的那个贴图。
void main(void)
{
gl_FragColor = texture2D(CC_Texture0, v_texture_coord) *(texture2D(lightmap, v_texture_coord1) * 2.0)
}
这个语句设置像素颜色。首先你会注意到从未声明过的 CC_Texture0变量。Cocos 2d-x中有大量可在着色器中使用的默认统一变量。再次强调,可在CCGLProgram.cpp中查看完整属性列表。这个例子中,CC_Texture0对应在3D模型中所应用到网格中的贴图。texture2D命令会在给定的贴图坐标中去查找贴图的像素颜色和透明度。它会返回一个包含了那个像素的RGBA值的vec4值 。所以这里我会在UV1中查找到瓦片贴图的颜色值,然后在UV2中查到光照贴图的颜色值,最后把两个值相乘。
你应该注意到了我先是把光照贴图的颜色值两两相乘了。因为贴图颜色值范围为0.0-1.0,所以很显然,如果用白色值vec4(1.0, 1.0, 1.0, 1.0)去乘中间灰值vec4( 0.5, 0.5, 0.5,1.0 ),那么你仍是得到一个中间灰值vec4( 0.5, 0.5, 0.5,1.0 )。将两个值相乘可以使贴图更亮,同时也可以使贴图更暗,这将使你获得一个很好的可变的亮度范围。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)