Unity 3D涂色
最近一直研究3D 涂色方面的东东 其实所为的3d模型上的涂色 最终结果都涂在纹理贴图上面
上面的鱼和方块都涂上了红色
源代码如下
// Update is called once per frame
void Update () {
if (Input.GetMouseButton (0)) { //点击鼠标 移动鼠标 开始涂色
Ray lRay = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit lHit;
if (Physics.Raycast (lRay, out lHit,100f,1<<LayerMask.NameToLayer("Game"))) {
MeshCollider meshCollider = lHit.transform.GetComponent<MeshCollider> ();
MeshRenderer lRender = lHit.transform.GetComponent<MeshRenderer> ();
if (lRender) {
Texture2D lTexture = lRender.sharedMaterial.mainTexture as Texture2D;
Vector2 pixelUV = lHit.textureCoord;
pixelUV.x *= lTexture.width;
pixelUV.y *= lTexture.height; //得到射线点在2d纹理图片上的坐标
Draw (pixelUV, lTexture);
} else {
SkinnedMeshRenderer render = lHit.transform.GetComponent<SkinnedMeshRenderer> ();
Texture2D lTexture = render.sharedMaterial.mainTexture as Texture2D;
Vector2 pixelUV = lHit.textureCoord;
pixelUV.x *= lTexture.width;
pixelUV.y *= lTexture.height;
Draw (pixelUV, lTexture);
}
}
}
}
// 修改纹理上对应点的颜色
public void Draw(Vector2 pPoint,Texture2D pTexture)
{
Rect lRect = new Rect (0,0,pTexture.width,pTexture.height);
pPoint -= new Vector2 (brush.width/2,brush.height/2);
Debug.Log (pPoint.ToString());
int lX = Mathf.FloorToInt (pPoint.x);
int lY = Mathf.FloorToInt (pPoint.y);
for (int i = 0; i < brush.width; i++) { //Brush 是画笔的纹理 (Texture2D)
for (int j = 0; j < brush.height; j++) {
Vector2 lPosition = new Vector2 (lX+i,lY+j);
if (lRect.Contains (lPosition) && brush.GetPixel (i, j).a > 0.8f) {
pTexture.SetPixel(lX+i,lY+j,Color.red);
}
}
}
pTexture.Apply();
}
Unity 3D涂色相关推荐
- unity 3d 中paint in 3d插件的简单使用
首先去AssetStore搜一下paint in 3d 接下来步入正题 新建个工程 将下载下来的包导入unity中 导入后,随便打开一个示例场景 本文打开的是MousePainting 运行后可以左键 ...
- 用ECS做HexMap:鼠标点击六边形单元涂色
基于Unity2019最新ECS架构开发MMO游戏笔记21 准备工作 鼠标触碰六边形单元 鼠标点击位置 更新计划 作者的话 ECS系列目录 ECS官方示例1:ForEach ECS官方案例2:IJob ...
- 用ECS做HexMap:利用RenderMesh为六边形涂色
基于Unity2019最新ECS架构开发MMO游戏笔记18 为六边形涂色 链接相邻单元 颜色混合 更新计划 作者的话 ECS系列目录 ECS官方示例1:ForEach ECS官方案例2:IJobFor ...
- 堆栈c语言 矩形填色,堆栈涂色游戏下载-堆栈涂色(stack paint)下载v0.1 安卓版-西西安卓游戏...
堆栈涂色(stack paint)是一款非常有意思的指尖涂色小游戏.在这里,玩家需要通过滑动手指让有色方块翻转堆叠到每一个空白颜色的方块之上,然后就能自动完成涂色啦.游戏画面卡通,操作简单,是款不错的 ...
- OpenCV(一)图像读取与新建、图像显示、操作图像像素(2种涂色并比较算法优劣、输出RGB)
目录 一.读取图像与新建图像 1.读取图像 2.新建图像 二.显示图像 1.过程 2.代码 3.运行效果 三.操作图像像素 1.逐RGB涂色(单循环)(快) 1-1.过程 2-2.代码 2-3.运行结 ...
- Unity 3D学习视觉脚本无需编码即可创建高级游戏
在本课程中,您将学习如何在Unity中使用可视化脚本(以前称为Bolt)以及如何在不编写一行代码的情况下创建自己的高级游戏所需的一切.本课程将教你如何掌握可视化脚本,即使你以前没有任何关于unity或 ...
- Unity三维游戏开发C#编程大师班 Masterclass In C# Programing Unity 3D Game Development FPS
本课程采用现代游戏开发(Unity 2021)的最新内容和最新技术 学习任何东西的最好方法是以一种真正有趣的方式去做,这就是这门课程的来源.如果你想了解你看到的这些不可思议的游戏是如何制作的,没有比这 ...
- Unity 3D为策略游戏创建地图学习教程
MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:30节课(7h 42m) |大小:5 GB 含项目文 ...
- Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D C#: Learn To Code Making 3D Games
Unity 3D游戏代码编程学习教程 Full Guide To Unity 3D & C#: Learn To Code Making 3D Games Full Guide To Unit ...
- bzoj 2375: 疯狂的涂色
2375: 疯狂的涂色 Time Limit: 5 Sec Memory Limit: 128 MB Description 小t非常喜爱画画,但是他还是一个初学者.他最近费尽千辛万苦才拜到已仙逝的 ...
最新文章
- 什么是RNA-Seq (RNA Sequencing)
- 全球及中国多非利特原料药行业发展模式分析及投资前景规划报告2022-2027年版
- OpenStack云第五天
- VMware 安装版中 安装VMware tools 图解
- 西安工程大学c语言试卷,知到_大学应用写作_单元测试答案知到C语言程序设计(西安工程大学)见面课答案...
- matlab案例 光学,MATLAB仿真及其在光学课程中的应用.pdf
- Linux进入救援系统怎么恢复,Linux在rescue(救援)模式修复GRUB (引导菜单)
- 愁绪千万端,扰乱不成眠——如何修复Noise?
- 利用中值滤波而不是均值滤波去除椒盐噪声(脉冲噪声)
- Log4net 配置详解
- 全国青少年软件编程(C语言)等级考试试题-2019年9月(一级含答案)
- spring扫描bean总结
- Oracle Grid 下载地址
- PHP计算字符串长度
- 2021最新软件测试面试题(含答案)
- 读完《副业赚钱》这本书我收获了这些干货,然后画了一张知识图谱
- Skydio 2在行动中的第一响应者部署显示了无人机自主权
- Flask+Bootstrap展示MM图片在网页上,从而更好地挑选富婆??
- webstorm激活码
- 3D标签云效果的实现
热门文章
- 聊聊小程序第三方登录
- Android虚拟机参数意义,Android虚拟机参数说明
- 厦大1394 抛硬币
- UPC 备战省赛第六场 Bumped!
- Android Studio调用高德地图api
- 学习汇报9.26-9.28
- 如何引用服务器lua文件,Lua教程(一):在C++中嵌入Lua脚本
- ActivityScenario启动失败Activity never becomes requested state [RESUMED, STARTED, CREATED, DESTROYED]
- DirectX诊断工具 dxdiag
- 软路由Linux7,CentOS 7 NAT软路由