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);
    }
}

内容概要:该论文研究了一种基于行波理论的输电线路故障诊断方法。当输电线路发生故障时,故障点会产生向两侧传播的电流和电压行波。通过相模变换对三相电流行波解耦,利用解耦后独立模量间的关系确定故障类型和相别,再采用小波变换模极大值法标定行波波头,从而计算故障点距离。仿真结果表明,该方法能准确识别故障类型和相别,并对故障点定位具有高精度。研究使用MATLAB进行仿真验证,为输电线路故障诊断提供了有效解决方案。文中详细介绍了三相电流信号生成、相模变换(Clarke变换)、小波变换波头检测、故障诊断主流程以及结果可视化等步骤,并通过多个实例验证了方法的有效性和准确性。 适合人群:具备一定电力系统基础知识和编程能力的专业人士,特别是从事电力系统保护与控制领域的工程师和技术人员。 使用场景及目标:①适用于电力系统的故障检测与诊断;②能够快速准确地识别输电线路的故障类型、相别及故障点位置;③为电力系统的安全稳定运行提供技术支持,减少停电时间和损失。 其他说明:该方法不仅在理论上进行了深入探讨,还提供了完整的Python代码实现,便于读者理解和实践。此外,文中还讨论了行波理论的核心公式、三相线路行波解耦、行波测距实现等关键技术点,并针对工程应用给出了注意事项,如波速校准、采样率要求、噪声处理等。这使得该方法不仅具有学术价值,也具有很强的实际应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值