如何制作3d转2d游戏3d虚拟场景制作软件地图

PS教程:百花谷地图3D转2D
  【PConline 教程】这次PS教程带来《神雕侠侣》百花谷地图3D转2D教程。下面先看看效果图吧!图01  这张图是神雕侠侣其中一张,叫&百花谷野外&,是3转2的场景,先有场景原画,然后3D按照原画做出其中的物件,例如山石、树木、建筑,最后在由修图把所有物件衔接,达到过渡自然的效果。因为这张图的PSD找不到了,没办法从模型到最终讲起,所以只能告诉大家一些小技巧和要领。  第一:植物图02  这竹子本来是绿色的,因为要融入蓝色环境就变成了以蓝为主,添加紫色为偏色的感觉,下深上浅的变化是受到光的影响。  制作方法:这是一棵绿色的竹子图03  锁定图04  笔刷工具图05  改成叠加模式,笔刷要稍大些,边缘用模糊的,容易表现出色彩过渡,画出明暗色彩,暗部和亮部的最终效果。图06图07  个人体会:校色的时候尽量用画的,跟用ctrl+u/m调的感觉不一样。  这些色彩变化都是受光的影响,光决定环境,环境决定色彩。图08相关阅读:PS教程:Photoshop打造超酷人体飘浮魔术PS大神分享!PS小白必知的超简单PS秘技
键盘也能翻页,试试“← →”键
软件论坛帖子排行
最新资讯离线随时看
聊天吐槽赢奖品
相关软件:
大小:472.98 MB
授权:免费
大小:59.45 MB
授权:免费3D地图制作应用Hover:将2D图片转3D
来源:搜狐IT
作者:移动新发现
  3D地图是个看上去很酷但做起来很难的东西,就连,而,也摆明了要加强在3D地图领域的竞争力。
  最近,又有一家3D地图公司受到了业界关注,它就是美国加州的初创公司Hover――该公司擅长将2D图片转为3D模型,最近刚刚落实了210万美元融资,其创始人及技术团队也相当“硬气”:既有前美国海军军官、前海豹突击队队员,又有前NASA(美国航空航天局)宇航员。
  Hover的软件能将从空中俯拍的2D图景转化成3D模型,还能通过大量街景实拍的高清照片对3D模型不断加以完善,从而建立让用户有“身临其境”之感的虚拟空间――它比传统的2D地图更加形象直观,尤其适合那些拿着地图也找不到方向的“路盲”们。
  在科技行业,3D地图也是出了名的“高帅富”领域之一―它绝对不是几个毛头小子在大学寝室里就能做出来的玩意儿,而Hover的创业和技术团队更是有着强大的背景:创始人A.J.Altman曾任英特尔工程师、美国海军陆战队上尉;董事长Ross Hangebrauck曾经是美国海军海豹突击队队员,同时还是国防与情报咨询机构North Vector的CEO;首席技术官(CEO)卢杰(Ed Lu)是美国华裔物理学家和前NASA宇航员,曾在国际空间站负责为谷歌地图、街景和地球项目拍摄图像。
  Hover此前几年一直为美国军方机构提供先进的3D地图技术,今年正式开始计划进军面向消费者的3D地图领域。凭借军方和NASA等过硬背景,该公司10月完成了310万美元融资,并且在日前落实了其中的210万美元。那么Hover能推出比苹果和谷歌更靠谱的产品吗?我们将继续关注。(悠拉)
(责任编辑:李何冉)
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器 - 推酷
【跟我一起学Unity3D】做一个2D的90坦克大战之地图编辑器
从10月20号到现在,Unity3D也学了10天了,对于Unity3D也有了一个大致的了解,有必要做一个小游戏来检测一下自己的学习成果了。经过两天的努力,终于总算是做出来了一个可以玩的坦克大战了。首先讲讲我的设计目标:
1.地图编辑器
2.道具系统
3.简单AI系统
其中,最重要的就是地图编辑器了,其次到AI系统,其他几个都挺简单的。
------------------------------------------------------------------------------------------------------------------------------------------
地图编辑器
我的想法是在编辑器中编辑好地图后,直接打开游戏就可以玩。这样的话,就需要一个文件来存储这些地图元素。鉴于xml在C#上支持非常好,简单易用,就选它了。
然后我们规定一下地图的格式,首先地图是由一个一个item组成的,原版的item有普通的墙,坚固的墙,水和草丛(德玛西亚)。为了方便读取,就用一个名字来规定他们,其次,由于我们是2D的场景,所以存入的坐标是x与y。最后得到的数据存储格式如下:
&name&gras&/name&
&position_x&-1.2&/position_x&
&position_y&-3&/position_y&
整个文件大概是下面这样的结构:
&name&gras&/name&
&position_x&-1.2&/position_x&
&position_y&-3&/position_y&
对应的文件存入的函数为:
bool SaveInXml()
if (File.Exists(m_sXmlPath))
File.Delete(m_sXmlPath);
XmlDocument xmlDoc = new XmlDocument();
XmlElement data = xmlDoc.CreateElement(&data&);
xmlDoc.AppendChild(data);
//地图数据
XmlElement xml_items = xmlDoc.CreateElement(&items&);
data.AppendChild(xml_items);
foreach (GameObject item in m_Items)
Debug.Log(&要保存的数据:& + item.name + &位置:& + item.transform.position.x + &,& + item.transform.position.y);
//save in xml file
XmlElement xml_item = xmlDoc.CreateElement(&item&);
xml_items.AppendChild(xml_item);
XmlElement name = xmlDoc.CreateElement(&name&);
name.InnerText = item.
xml_item.AppendChild(name);
XmlElement position_x = xmlDoc.CreateElement(&position_x&);
position_x.InnerText = item.transform.position.x.ToString();
xml_item.AppendChild(position_x);
XmlElement position_y = xmlDoc.CreateElement(&position_y&);
position_y.InnerText = item.transform.position.y.ToString();
xml_item.AppendChild(position_y);
xmlDoc.Save(m_sXmlPath);
Debug.Log(&创建XML完毕&);
m_Items.Clear();
然后就是对应的读取函数了(读取完直接实例化显示的):
void ReadMap(XmlNode xml_items)
XmlNodeList items = xml_items.SelectNodes(&item&);
foreach (XmlNode current_node in items)
XmlNode current_name = current_node.SelectSingleNode(&name&);
XmlNode position_x = current_node.SelectSingleNode(&position_x&);
XmlNode position_y = current_node.SelectSingleNode(&position_y&);
Vector3 psition = new Vector3(float.Parse(position_x.InnerText), float.Parse(position_y.InnerText), -1);
if (current_name.InnerText == &wall&)
m_readItem = Instantiate(m_ItemWall, psition, Quaternion.identity) as GameO
else if (current_name.InnerText == &gras&)
m_readItem = Instantiate(m_ItemGras, psition, Quaternion.identity) as GameO
else if (current_name.InnerText == &steel&)
m_readItem = Instantiate(m_ItemSteel, psition, Quaternion.identity) as GameO
else if (current_name.InnerText == &water&)
m_readItem = Instantiate(m_ItemWater, psition, Quaternion.identity) as GameO
m_readItem.name = current_name.InnerT
Debug.Log(&要读取的数据:& + m_readItem.name + &位置:& + m_readItem.transform.position.x + &,& + m_readItem.transform.position.y);
m_Items.Add(m_readItem);
这样,就完成了一个基本的地图编辑器的核心部分了,剩下的就是拖拽控件了。
关于拖拽控件,设计的想法是,地图的item在右边,然后点击item会复制一个点击到的item,然后可以拖拽这个复制出来的item到地图上,下面是实现代码:
void Update()
//检测鼠标左键的拾取
if (Input.GetMouseButtonDown(0))
//鼠标的屏幕坐标空间位置转射线
m_ray = Camera.main.ScreenPointToRay(Input.mousePosition);
m_rayhit = Physics2D.GetRayIntersection(m_ray);
//射线检测,相关检测信息保存到RaycastHit 结构中
if (m_rayhit)
//打印射线碰撞到的对象的名称
Debug.Log(m_rayhit.collider.gameObject.name);
if (m_rayhit.collider.gameObject.name == &walls& ||
m_rayhit.collider.gameObject.name == &grass& ||
m_rayhit.collider.gameObject.name == &steels& ||
m_rayhit.collider.gameObject.name == &waters&)
m_clickItem = Instantiate(m_rayhit.collider.gameObject, m_rayhit.collider.transform.position, Quaternion.identity) as GameO
m_clickItem.name = m_rayhit.collider.gameObject.name.Substring(0, m_rayhit.collider.gameObject.name.Length - 1);
//m_clickItem.tag = m_clickItem. //ERROR: not define tag in editor
m_Items.Add(m_clickItem);
else if (m_rayhit.collider.gameObject.name == &wall& ||
m_rayhit.collider.gameObject.name == &gras& ||
m_rayhit.collider.gameObject.name == &steel& ||
m_rayhit.collider.gameObject.name == &water&)
m_clickItem = m_rayhit.collider.gameO
m_clickItem =
m_clickItem =
if (Input.GetMouseButton(0))
if (m_clickItem != null)
m_clickItem.transform.position = SetPointInMap(new Vector3(camera.ScreenToWorldPoint(Input.mousePosition).x, camera.ScreenToWorldPoint(Input.mousePosition).y, -1));
if (Input.GetMouseButtonUp(0))
if (m_clickItem != null)
Vector3 cur_point = SetPointInMap(new Vector3(camera.ScreenToWorldPoint(Input.mousePosition).x, camera.ScreenToWorldPoint(Input.mousePosition).y, -1));
if (m_Map.collider2D.OverlapPoint(cur_point))
m_clickItem.transform.position = cur_
else //在地图外就销毁掉
Destroy(m_clickItem);
这样,就完成了一个简单的地图编辑器的基本功能了。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致TK2D 地图制作
视频太卡?试试切换线路
本课时介绍了 2D 游戏里 Tile 的作用和原理。
本课时介绍了 2D 游戏里如何使用 TK2D 的 TileMap。
本课时介绍了 2D 游戏里如何使 TK2D 的游戏精灵在 TileMap 中移动。
只有成为VIP会员才能提问&回复,快吧!如果你还没有账号你可以一个账号。
添加新技术问题
课程 [Tile 概念]
中已存在问题
添加新技术问题
问题描述越详细,被解答的速度越快
有新回答时请邮件提醒我
着急,拜托快点
不急,慢慢解决
关联课程 [Tile 概念]
服务热线:400-678-8266

我要回帖

更多关于 3d场景模型制作 的文章

 

随机推荐