当前位置: 首页 > article >正文

Unity Paint In 3D 入门

插件版本4.1.8

快速开始

这是一个强大的,可自由涂鸦的Unity插件.

步骤1

任何带有 MeshFilter + MeshRenderer 或 SkinnedMeshRenderer 的 GameObject 均可被喷涂。

​方法1​
为 GameObject 添加 CwPaintableMesh 组件。

​方法2​
点击 MeshRenderer 或 SkinnedMeshRenderer 组件的上下文菜单(右上角 ​​⋮ 图标​​),选择 ​​"Make Paintable (Paint in 3D)"​​ 选项。

两个方法任选一个

添加 CwPaintableMesh 组件后,可选择点击 ​​"Analyze Mesh"​​ 按钮检测网格是否适合喷涂。

Unity自带的Cube是不合适的.在你使用分析器后,展示大面积的红色代表不适合被涂鸦.

而几乎没有红色则代表合适.

步骤2

你需要选择使用什么纹理喷涂.

物体的 MeshRenderer 或 SkinnedMeshRenderer 组件包含一个 ​​Materials数组​​(通常只有一个材质)。每个材质依赖着色器(Shader)渲染,而着色器会使用多个纹理。

多数着色器都包含​​Albedo/Color纹理,还有一些更高级的可能还包含 ​​法线贴图(_BumpMap)​​、​​自发光贴图(_EmissionMap)​​

配置方法​

​方法1​
在 CwPaintableMesh 组件Inspector中点击 ​​"Add Paintable Texture"​​ 按钮。

​方法2​
手动添加 CwPaintableMeshTexture 组件到GameObject(需与 CwPaintableMesh 组件共存)。

添加成功后,您将看到新增的 CwPaintableMeshTexture 组件

关键参数设置​
  1. ​Slot 下拉菜单​

    • 点击下拉箭头,选择当前渲染器使用的纹理
    • 常规物体使用默认值:​​0, _MainTex​​(对应主贴图)
    • 特殊需求示例:
      • 喷涂法线贴图 → 选择 ​​0, _BumpMap​
      • 喷涂金属度 → 选择 ​​0, _MetallicGlossMap​

  1. ​URP/HDRP 注意事项​

    • ​URP Lit着色器​​ 使用 ​​0, _BaseMap​​ 作为Albedo纹理
    • _MainTex 是兼容旧版的伪插槽,实际无效

步骤3

有多种方式喷涂物体.

一个简单的方法是创建一个新的GameObject,并添加CwHitScreen和CwPaintSphere 组件(这里的官网原文写的是CwPaintDecal组件,但是经过我的测试无法正常工作)。
这些组件将自动协同工作,允许您使用鼠标(或者如果在移动设备上运行手指)进行绘制。
注意:CwHitScreen组件使用射线检测,所以你的网格必须有碰撞器,以便它知道在哪里绘制。

你可以根据自己的喜好调整CwPaintSphere 组件的设置.

最好改变一下颜色,因为默认的颜色是白色,可能会让你误以为什么也没发生.

现在运行看下效果!

更高级的用法请查看示例PaintIn3D/Examples 

简单总结

首先你的物体想要能被绘制要加上

然后还要还需要一个物体包含下面的这些组件,这个物体是通过事件驱动的方式涂鸦可被涂鸦的物体.

如何使用自己的射线检测

但是我阅读该插件的源代码,发现本质是利用从摄像机发射一个射向鼠标的射线.

我有一个需求就是自己射线检测得到的RaycastHit结果替换掉插件默认的射线检测结果(插件默认使用主相机发射射线)

在这里

 我尝试重写该方法,可以正常工作,

var hit = transform.parent.GetComponent<Device_HVLP>().Hit;

这句是我缓存的RaycastHit结果,你替换成你的RaycastHit传给

hit3D = new CwHit(hit);
public class MyCwHitScreen : CwHitScreen
{protected override void DoQuery(Vector2 screenPosition, ref Camera camera, ref Ray ray, ref CwHit hit3D,ref RaycastHit2D hit2D){hit2D = default(RaycastHit2D);camera = CwHelper.GetCamera(Camera);var hit = transform.parent.GetComponent<Device_HVLP>().Hit;hit3D = new CwHit(hit);}
}

相关文章:

Unity Paint In 3D 入门

插件版本4.1.8 快速开始 这是一个强大的,可自由涂鸦的Unity插件. 步骤1 任何带有 MeshFilter MeshRenderer 或 SkinnedMeshRenderer 的 GameObject 均可被喷涂。​​ ​​方法1​​ 为 GameObject 添加 CwPaintableMesh 组件。 ​​方法2​​ 点击 MeshRenderer 或 Skinne…...

风车邮箱系统详细使用指南:Windows与Ubuntu双平台解析

风车邮箱系统V1.2使用手册 风车邮箱系统详细使用指南&#xff1a;Windows与Ubuntu双平台解析 前言 在日常网络活动中&#xff0c;我们经常需要一个临时邮箱来注册各类网站或接收验证码&#xff0c;但不想使用自己的真实邮箱。「风车无线邮箱系统」作为一款优秀的临时邮箱工具…...

PyMC+AI提示词贝叶斯项目反应IRT理论Rasch分析篮球比赛官方数据:球员能力与位置层级结构研究

全文链接&#xff1a;tecdat.cn/?p41666 在体育数据分析领域不断发展的当下&#xff0c;数据科学家们致力于挖掘数据背后的深层价值&#xff0c;为各行业提供更具洞察力的决策依据。近期&#xff0c;我们团队完成了一项极具意义的咨询项目&#xff0c;旨在通过先进的数据分析手…...

⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)

播放大分辨率视频以及实现局域网视频同步是许多开发者会遇到的需求&#xff0c;AVPro有一个 Ultra Edition版本,也能播放Hap格式视频,之外就是Demolition Media Hap插件啦&#xff0c;实测即使是 7208*3808 大分辨率的视频帧率还是能稳定在30帧&#xff0c;它能帮助我们轻松解决…...

【数据可视化-22】脱发因素探索的可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个…...

kubernetes》》k8s》》Heml

Heml 资料 下载地址 安装 curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash# helm 添加 仓库 # helm repo add 仓库名称 仓库地址 helm repo add stable http://mirror.azure.cn/kubernetes/charts/ # 移除仓库 helm repo remove 仓库名…...

MySQL表的操作 -- 表的增删改查

目录 1. 表的创建2. 表的查看3. 表的修改4. 表的删除5. 总结 1. 表的创建 1.查看字符集及效验规则 2. 表的创建 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;创建用户表1 创建用…...

GIS开发笔记(12)基于osg和osgearth实现三维地图上的轨迹线绘制

一、实现效果 二、实现原理 1.设置起点和终点,用函数模拟出轨迹点,如从武汉到长春; 2.将地理坐标点转换成为世界坐标点; 3.根据世界坐标点绘制轨迹线,并设置样式; 4.将轨迹节点挂接到根节点,并定位。 三、参考代码 void MainWindow::sltDrawTrajectory() {qDebug(...

MTKAndroid13-Launcher3 屏蔽部分app不让显示

实现Launcher3 桌面屏蔽部分内容&#xff0c;不让显示 文章目录 修改文件路径-实现方式基础-源码模块配置Launcher3 源码位置编译模块配置配置如下参数 属性配置&#xff1a;默认的Launcher3 选项配置GMS的Launcher3 配置 第三方Launcher需要默认为Launcher时候-系统Launcher3 …...

PostgreSQL 数据库备份与恢复全面指南20250424

PostgreSQL 数据库备份与恢复全面指南 在数据库管理中&#xff0c;备份与恢复操作对于确保数据安全性、可用性和完整性至关重要。PostgreSQL 作为一款开源关系型数据库系统&#xff0c;广泛应用于各行各业&#xff0c;尤其在现代 AI 和大数据应用中&#xff0c;作为数据存储的…...

专家系统的知识获取、检测与组织管理——基于《人工智能原理与方法》的深度解析

前文我们已经了解了专家系统的基本概念和一般结构&#xff0c;系统中有专业的知识才是专家系统的关键&#xff0c;接下来对专家系统中的知识是如何获取、检测、组织和管理的进行探讨。 1.专家系统的基本概念&#xff1a;专家系统的基本概念解析——基于《人工智能原理与方法》…...

contenthash 持久化缓存

以下是关于持久化缓存(contenthash)的深度技术解析,涵盖原理、配置策略及最佳实践,帮助我们构建高性能前端应用的缓存体系: 一、缓存机制核心原理 1. 浏览器缓存决策矩阵 触发条件缓存行为对应场景URL 未变化 + 强缓存有效直接读取磁盘/内存缓存未修改的静态资源URL 变化…...

让Editplus支持squirrel语言

用EditPlus配置完实现关键字、函数、高光代码、自动完成、代码调试。先看看效果&#xff1a; 主要是由 nut.stx &#xff08;语法文件&#xff09;和 nut.acp &#xff08;自动完成&#xff09;两个文件 实现 Nut.stx文件内容&#xff1a; ---------------------------------…...

Arm GICv3中断处理模型解析

1. Targeted Distribution Model(目标分发模型) 中断会被发送到软件指定的目标PE,且仅由该PE处理。 2. Targeted List Model(目标列表模型) 主要针对于SGIs(Software Generated Interrupts,软件生成中断)中断。 多个PE可以独立接收同一个中断。 当一个PE确认(ackn…...

Leetcode 2845 题解

还是要把自己做题的思路写出来的&#xff0c;但是结果可能还是得去观摩一下题解&#xff0c;无论是大佬写的题解还是leetcode官方写的题解&#xff0c;看完题解后再去反思才能有收获&#xff0c;即使下次遇见一样的题不见得能写出来&#xff0c;但有思路比没思路更重要。 今天写…...

【爬虫】DrissionPage-获取douyim用户下的视频

之前看过DrissionPage&#xff0c;觉得很厉害&#xff0c;比selenium简单&#xff0c;适合新手。因为盲目跟风逆向&#xff0c;今天看了一个DrissionPage案例直播&#xff0c;学习一下&#xff0c;真香哈。 DrissionPage官网&#xff1a;&#x1f6f0;️ 概述 | DrissionPage官…...

【Python爬虫基础篇】--3.cookie和session

目录 1.cookie 1.1.定义 1.2.参数 1.3.分类 2.session 3.使用cookie登录微博 4.使用session登录 1.cookie 由于http是一个无状态的协议&#xff0c;请求与请求之间无法相互传递或者记录一些信息&#xff0c;cookie和session正是为了解决这个问题而产生。 例子&#xff1…...

React 文件链条

在 React 项目中&#xff0c;首次展示在前台的是以下文件组合作用的结果&#xff1a; --- ### **核心文件链条** 1. **public/index.html** - 这是浏览器实际加载的入口文件 - 包含一个 <div id"root"></div> 容器 - 通过 <script> 标…...

分数线降低,25西电马克思主义学院(考研录取情况)

1、马克思主义学院各个方向 2、马克思主义学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、马克思主义理论25年相较于24年下降10分&#xff0c;为355分 3、25vs24推免/统招人数对比 学长、学姐分析 由表可看出&#xff1a; 1、 马克思主义学院25年共接…...

微信、抖音、小红书emoji符号大全

1、Emoji 日常符号 &#x1f463;&#x1f440;&#x1f441;️&#x1f444;&#x1f48b;&#x1f442;&#x1f9bb;&#x1f443;&#x1f445;&#x1f9e0;&#x1fac0;&#x1fac1;&#x1f9b7;&#x1f9b4;&#x1f4aa;&#x1f9be;&#x1f9bf;&#x1f9b5;&a…...

Cancer Cell|scRNA-seq + scTCR + 空间多组学整合分析,揭示CD8⁺ T细胞在免疫治疗中的“双路径” | 临床问题的组学解答

Cancer Cell&#xff5c;scRNA-seq scTCR 空间多组学整合分析&#xff0c;揭示CD8⁺ T细胞在免疫治疗中的“双路径” &#x1f44b; 欢迎关注我的生信学习专栏~ 如果觉得文章有帮助&#xff0c;别忘了点赞、关注、评论&#xff0c;一起学习 近日&#xff0c;《Cancer Cell》…...

ubuntu(28):ubuntu系统多版本conda和多版本cuda共存

0. cuda(包括cudnn)、conda安装照常 注意&#xff1a; &#xff08;1&#xff09;多个conda不要安装到一个目录了&#xff0c;可以见下面的示例目录&#xff1b; &#xff08;2&#xff09;cuda&#xff08;包括cudnn&#xff09;不用纠结是否添加超链接 1. 需要修改环境配置…...

C# 下 using 块的作用 + VS2022 下 using 语法糖怎样工作

&#x1f50d; using 的本意是什么&#xff1f; using 是 C# 中用于 自动释放资源 的语法糖&#xff0c;适用于实现了 IDisposable 接口的对象&#xff08;比如数据库连接、文件、网络流等&#xff09;。 &#x1f9d0; 首先看下SqlSugarClient类部分源码&#xff1a; SqlSug…...

实体店的小程序转型之路:拥抱新零售的密码-中小企实战运营和营销工作室博客

实体店的小程序转型之路&#xff1a;拥抱新零售的密码-中小企实战运营和营销工作室博客 在当今数字化浪潮的冲击下&#xff0c;实体店面临着前所未有的挑战&#xff0c;但小程序的出现为实体店转型新零售带来了新的曙光。先来看一组惊人的数据&#xff0c;据相关统计&#xff…...

UML 类图基础和类关系辨析

UML 类图 目录 1 概述 2 类图MerMaid基本表示法 3 类关系详解 3.1 实现和继承 3.1.1 实现&#xff08;Realization&#xff09;3.1.2 继承/泛化&#xff08;Inheritance/Generalization&#xff09; 3.2 聚合和组合 3.2.1 组合&#xff08;Composition&#xff09;3.2.2 聚…...

15.三数之和(LeetCode)java

个人理解&#xff1a; 1.使用双指针做法&#xff0c;首先对数组进行排序 第一重for循环控制第一个数&#xff0c;对数组进行遍历。双指针初始化为lefti1, rigthnums.length-1。然后使用while循环移动双指针寻找合适的数。因为返回的是数&#xff0c;不是下标&#xff0c;数不能…...

Spark读取Apollo配置

--conf spark.driver.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 --conf spark.executor.extraJavaOptions-Dapp.idapollo的app.id -Denvfat -Dapollo.clusterfat -Dfat_metaapollo的meta地址 在spark的提交命令中&…...

如何通过 Websoft9 应用自托管平台一键安装任意版本 Odoo?

手工安装 Odoo 的复杂流程 环境准备阶段&#xff1a;安装 Docker 需熟悉 Linux 系统操作&#xff0c;需配置软件源、解决依赖冲突&#xff1b; 镜像获取阶段&#xff1a;从 Docker Hub 拉取官方镜像时可能因网络问题失败&#xff0c;且需自行验证版本兼容性&#xff1b; 容器…...

Anaconda3使用conda进行包管理

一、基础包管理操作 ‌安装包‌ 使用 conda install <包名> 安装指定包&#xff0c;支持多包批量安装和版本指定&#xff1a; conda install numpy # 安装单个包 conda install numpy scipy pandas # 批量安装多个包 conda install numpy1.21 # 指定版本 conda instal…...

exec和spawn

前言 需求&#xff1a;做一个electron应用&#xff0c;用node打开exe软件&#xff0c;打开后返回成功与否&#xff0c;打开的软件不会随electron应用的关闭而关闭 exec exec 第一个参数为要运行的command命令&#xff0c;参数以空格分隔。 child_process.exec(command[, opti…...