Unity插件Paint in 3d pro是如何实现Runtime Undo和Redo的

目录

神作,不用多解释

P3dStateManager,和

P3dPaintableTexture

开源或者被开源的世界

HitScene.cs

InputManager.cs

看看文档

看看例子

看看代码实现


神作,不用多解释

学习这个项目,不但能让你掌握基础的3d实战知识,还能了解框架,了解Editor扩展开发,了解C#语法

“当然,好处多多,难道一个坏处都没有,应该就是上手门槛挺高吧”

国内这种资源也很容易获得

要做一个画画工具,或者APP

Undo是最基本

这里稍微分析一下如何实现:(然而并没有分析)

这是Pro版本,和几年前普通的Paint in 3d也完全不可比

几年前还只能Editor Undo,不能runtime回退

不过当年的Hist—manager还是做得挺巧妙,今天我们一起来看下Pro版本的History如何做的呢》》???

现在的Paint in 3d pro版本除了内核换成gpu绘制,架构大改之外,还加了很多功能和很多例子:

其中一个例子就是In Game的Undo和Redo

看了一下,调用方法很简单

P3dStateManager.UndoAll();

主要依赖

P3dStateManager,和

P3dPaintableTexture

P3dStateManager 本身并没有多少代码,也不是核心。。。。。。

至于,具体回退+Redo的分析和实现,之后想起再说吧,谢谢阅读

开源或者被开源的世界

回滚和历史草的关键还是一开始那个图

主要的绘制实现,以及回滚绘制的实现,还是通过上面P3dPaintable Texture这个类(组件)

其中Undo有3个选项

1 是 None, 这有点废话;

2 是Texture,反正选了没有用,应该是要特别指定;

3 是记录本地操作命令(有点像帧同步),

“”极像或者100%相同都是严重问题,回滚按2下,能回退一次,也只能回退一次,之后回滚按多少下也没作用,只有第一次有效(嗨,你个帧同步)“”

总之就是有各种bug(嗨,你个软件开发),不过还好有源码

后来发现,还是自己造成的bug

用了imgui和paint3d冲突,其实ugui也冲突,只是人家的框架有封装

HitScene.cs

InputManager.cs

至于怎么判断是否点击在ui上,避免2d和3d的冲突,可参考:

https://blog.csdn.net/avi9111/article/details/116568250?spm=1001.2014.3001.5502

开源最大的作用不是分享,不是共享,不是灵活,不是集思广益,真正的开源的作用是修bug

一个人修,或一个团队修还真修不好;

还真的需要一个天才做架构,然后一堆搬砖基于开源修bug,和改善流程,虽然我不想承认自己是搬砖的

也唯有这样才能把一个产品做好

而扑街的产品遍地都是,高达99%都是平庸的产品

但又因为开源,使得整个软件“世界”都是平的,总有上千上万个产品

所以能形成一个好的开源生态,至少能出现上千个好产品

这就是开源神作的本质

看看文档

看看例子

注意的就是默认绘制颜色是白色,shader texture默认白色,会感觉没效果,改下颜色就好了,也不需要怎么配置,就能做出3d绘制的效果,基于Paint IN 3d pro这个插件

 

看看代码实现

很多,罄竹难书,自己看源码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
3D绘制允许你在游戏和编辑器中绘制场景中的所有对象。 记住这不是一个贴花系统,所以你的游戏不会因为你画了多少而延迟。相反,您的FPS将保持不变,即使您将对象绘制一百万次! 看看:WebGL演示|论坛线程 ▶一致的性能 即使你画了很多,在3D中画的速度还是很快的原因是因为颜料被烘焙成物体的纹理。你的对象已经有纹理了,为什么不使用它们呢?代码也不会产生垃圾(0 gc alloc),所以您不必担心随机延迟峰值。 ▶闪电快速绘画 烤漆成纹理听起来很慢,但是画图代码是在GPU上100%完成的,这使得它的速度非常快。绘制代码也经过了大量优化,以通过将绘制操作组合在一起来最小化状态更改。 ▶完整的c#源代码 就像我的所有资产一样,我提供了完整的c#源代码——没有什么隐藏在.dll中。代码的组织和注释也很好,所以如果需要,可以很容易地进行更改。 ▶长期支持 就像我所有的资产,我提供长期的支持,不会在你购买后就消失。我也提供定期的免费更新基于伟大的功能从客户的要求。 ▶蒙皮绘画 在3D绘制允许您绘制动画对象与伟大的性能。看看WebGL的演示,看看僵尸油漆看起来有多棒。 ▶无缝紫外线绘画 如果你有一个复杂的网格,它是常见的接缝时绘画,甚至当使用专业的绘画软件。3D绘画解决 了这个问题,包括“缝线固定”工具。3D绘画也使多个对象之间的绘画无缝连接,即使它们有不同的比例。 ▶易于使用 就像我的所有资产一样,我尽量保持界面简单。在几分钟之内,你就可以在游戏中添加绘画功能,并根据你的需要调整简单而强大的设置。 ▶团队基础绘画 3D绘画具有易于使用的基于团队的绘画功能。你可以指定一个特定的颜色给一个特定的团队,并计算每个团队在你的场景中画了多少像素! ▶Multi-Texture绘画 如果你有一个复杂的材质和着色器,有多个纹理一起工作,那么没问题。3D绘画允许你创建画笔,在同一时间绘制多个纹理,并给予每个画笔独特的设置。 ▶完整的物质支持 3D绘制不仅支持绘制所有的材质和着色器与统一,但所有你的定制的!使用直观的检查器,您可以轻松地选择您想要绘制的材质和纹理。 ▶在游戏&编辑器 3D绘画从一开始就被设计来支持游戏和编辑器中的绘画。这允许您在编辑器中快速调整纹理,然后在游戏中使用完全相同的特性绘制它们。 ▶混合模式 你不局限于画普通的反照率纹理。3D绘画有一系列的混合模式和设置,允许你画任何类型的纹理你喜欢。例如,添加混合照明纹理,RGB隔离阿尔法混合切割纹理,和更多。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

avi9111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值