Unity3D GPU Selector/Picker

这篇具有很好参考价值的文章主要介绍了Unity3D GPU Selector/Picker。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity3D GPU Selector/Picker

一、概述

1.动机
Unity3D中通常情况下使用物理系统进行物体点击选择的基础,对于含大量对象的场景,添加Collider组件会增加内容占用,因此使用基于GPU的点击选择方案
2.实现思路
对于场景的每个物体,构建一个<meshrenderer,color>,在点击后,替换物体材质的颜色为该字典中相应键值的颜色, 进行渲染,获取RenderTexture,并转存在Texture中,然后采集鼠标点击位置的颜色,查询该颜色对应的meshrenderer,之后对从相机到鼠标点击位置的射线与mesh中的三角面求交,从而得出点击位置
3.实现过程
3.1 模型的Read/Write
由于需要进行射线与模型三角面求交计算,所以需要勾选模型的该选项,但勾选该选项后,会驻留除模型三角面信息之外的如法线、切线等其他大量的数据在内存中,从而快速的引起内存不足的问题,因此需要将模型的三角面存储在ScriptableObject对象中
3.2 多个交点
射线可能与模型会有多个交点,因此需要选取离相机最近的点作为结果
3.3 使用的RenderTexture的大小
初始实现时,使用了与分辨率同等大小的RenderTexture,若为1920*1080,其内存占用则为31.6MB,会引起Gfx.ReadbackImage的占用,因仅需关注鼠标点击位置的颜色,因此可调整RenderTexture的尺寸,而调整采样Camera的方向即可,并调整其
3.4 Directionary<meshrenderer,color>的设计
将Color的RGB通道作为层号、行号和列号,因此整个字典就像一个叠在一起的鸡蛋托盘一样;
为了提高利用颜色值检索时的精度,增加颜色键值的STEP,可能并未起作用,即RGB值每次递增STEP,而不是1,如R值依次为0,2,4,6,…
对于RGB值使用无符号整型即可,即ubyte;
使用位移操作代替乘法与除法操作;
3.5 问题
如果点击后场景颜色发生了变化,可能是GPU Selector中使用的Shader修改了材质中的Color属性。因此,需要注意使用Directionary<meshrenderer,color>中的颜色渲染时,Shader中Color属性名的唯一性
3.6 笔记
MeshCollider可能带来与triangles数据等量的内存占用;
Model.Read/Write会带来数倍的内存消耗
1M=1024KB=1048576Bytes

3.7 关键API与算法
(a)API:
Camera.SetReplacementShader/Camera.ResetReplacementShader
Camera.RenderWithShader
(b)射线与三角面求交
Möller-Trumbore算法
(c)IEquatable接口的实现

二、遗留问题

1.目前只能在Gramma色彩空间中进行使用,对采样RenderTexture的RenderTextureReadWrite和Texture2D的bool linear的设置好像没有起作用,待继续调试文章来源地址https://www.toymoban.com/news/detail-633089.html

到了这里,关于Unity3D GPU Selector/Picker的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity3D-01】 记录Unity3D调用外接摄像头

    最近想在Unity3D上调用一个摄像头,通过查找资料发现仙魁XAN和八哥快走开的博客符合我的想法,实现起来也不难就尝试了一下 2.1 在这个工程里新建Canvas 如下图所示 然后下设RawImage为载体 2.2 在Assets里面新建一个脚本命名为PlaneManager.cs 代码内容如下(参考八哥快走开的博客)

    2024年02月04日
    浏览(54)
  • 【Unity3D小功能】Unity3D中实现Text显示版本功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在项目开发中,会遇到要控制版本的情况,比如说对比版本号,版本不对再更新版本的功能,这些就是

    2024年02月05日
    浏览(79)
  • 【Unity3D小功能】Unity3D中实现点击‘文字’出现‘UI面板’

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 QQ群:398291828 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 宠粉博主又来了,今天有粉丝问我如何实现点击一段文字然后出现的面板在那段文字附近显示: 深入了

    2024年04月13日
    浏览(87)
  • 【Unity3D】Unity3D 软件安装 ( 注册账号并下载 Unity Hub | 安装 Unity Hub | 获取个人版授权 | 中文环境设置 | 安装 Unity3D 编辑器 )

    Unity 官方网站 : 英文 : https://unity.com 中文 : https://unity.cn 进入 中文网站 https://unity.cn , 点击右上角的 \\\" 下载 Unity \\\" 按钮 ; 推荐下载 Unity3D 的长期支持版本 ; 点击界面中的 \\\" 下载 Unity Hub \\\" 选项 ; 根据你的系统 , 选择对应的 Unity Hub , 我在 Windows 上开发 , 因此选择 \\\" Windows 下载 \\\"

    2024年01月25日
    浏览(103)
  • 【Unity3D日常开发】Unity3D中实现不同脚本之间的执行顺序控制

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 首先,来了解一下事件函数的执行顺序,下图是官方给的脚本中事件函数的执行顺序: 众所周知,U

    2024年02月02日
    浏览(58)
  • 【Unity3D小功能】Unity3D中实现仿真时钟、表盘、仿原神时钟

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 今天实现一个时钟工具,其实在之前已经完成了一个简单的时钟工具:【Unity3D应用案例系列】时钟、

    2024年02月05日
    浏览(78)
  • 【Unity3D编辑器开发】Unity3D中实现Transform快速复制粘贴【非常实用】

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 在开发中,常常会遇到频繁复制粘贴物体的坐标、旋转、缩放的操作。 使用Unity自带的组件复制粘贴比

    2024年02月07日
    浏览(71)
  • 【Unity3D小功能】Unity3D中实现UI擦除效果、刮刮卡功能

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 大家好,我是佛系工程师 ☆恬静的小魔龙☆ ,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 使用Unity3D实现UI的擦拭效果、刮刮卡功能的效果实现方式比较多,比如说用Shader、Texture渲染都是可以

    2024年02月04日
    浏览(250)
  • Unity3D:2D/3D 项目

    推荐:将 NSDT场景编辑器 加入你的3D工具链 3D工具集: NSDT简石数字孪生 无论是创建 2D 还是 3D 游戏,Unity 都很拿手。在 Unity 中创建新项目时,可以选择以 2D 或 3D 模式启动。您可能已经知道要构建什么,但有一些细微的要点可能会影响选择的模式。 选择是以 2D 还是 3D 模式启

    2024年02月07日
    浏览(61)
  • [Unity3D] 3D贪吃蛇

    目录 前言 一、整体设计思路 二、蛇体部分 2.1  蛇头(模仿传统贪吃蛇) 2.2  蛇身 2.3  贪吃蛇(改进版) 三、食物部分 3.1  旋转 3.2  触发器 3.3  生成食物 四、墙体部分 4.1  提供环境 五、胜利和失败的判定 5.1  屏幕显示分数 5.2  游戏胜利 5.3  游戏失败 六、界面设计

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包