Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] 小人边界裁剪问题与一些建议 #4

Closed
5 tasks done
Misaka2298 opened this issue Oct 4, 2022 · 15 comments
Closed
5 tasks done

[Bug] 小人边界裁剪问题与一些建议 #4

Misaka2298 opened this issue Oct 4, 2022 · 15 comments
Labels
Bug Something isn't working Enhancement New feature or request Good Issue Good for newcomers

Comments

@Misaka2298
Copy link

Misaka2298 commented Oct 4, 2022

这些在B站私信发过了,不过Github的issue界面突然可以打开了,就再发一遍吧

问题

  • 凯尔希的M3水晶有一个角不显示 (这是属于裁切问题——作者注)

建议

  • 建议1:小人在按下Win+D返回桌面后会消失,如果可行的话或许可以让小人的窗口一直显示在最上方
  • 建议2:在选择小人模型的界面添加中文索引(滚轮一个一个猜干员英文名缩写实在是太折磨人了)
  • 建议3:增加跨桌面功能(我有两个显示器,但是小人只能在其中一个显示器上显示)
  • 建议4:开机自启动
  • 建议5:或许可以增加一个爬墙功能(不过可能会被喷抄袭shimeji) (Not Planned - 作者注)
@Misaka2298
Copy link
Author

小人重叠闪烁 和 小人陷进任务栏这两个已经有人提交过issue了,我这里就不再重复了

@ChuJiani
Copy link

ChuJiani commented Oct 4, 2022

bug1 应该是裁切问题
建议5 应该比较难搞,因为作者目前使用的都是已有动作,如果增加爬墙功能大概需要额外设计,spine 动画设计起来又比较麻烦,干员骨架不同需要单独设计,大工程(

@isHarryh
Copy link
Owner

isHarryh commented Oct 5, 2022

bug1 确是剪裁问题

@isHarryh
Copy link
Owner

isHarryh commented Oct 5, 2022

建议1/2/4将被优先采纳。
建议5你的意思是已经有人做过了?但我其实不知道(

@isHarryh isHarryh changed the title bug和建议 [Bug] 小人边界裁剪问题 Oct 5, 2022
@ChuJiani
Copy link

ChuJiani commented Oct 5, 2022

建议5你的意思是已经有人做过了?但我其实不知道(

shimeji 是一个像素风的桌宠软件(源码演示+简易教程),基于帧播放进行而非实时渲染,允许自定义模型(当然也是要自己绘制 / 生成的连续图片)。

@isHarryh
Copy link
Owner

isHarryh commented Oct 5, 2022

建议5你的意思是已经有人做过了?但我其实不知道(

shimeji 是一个像素风的桌宠软件(源码演示+简易教程),基于帧播放进行而非实时渲染,允许自定义模型(当然也是要自己绘制 / 生成的连续图片)。

Okay

@isHarryh isHarryh added Bug Something isn't working Enhancement New feature or request labels Oct 9, 2022
@isHarryh
Copy link
Owner

建议1:小人在按下Win+D返回桌面后会消失,如果可行的话或许可以让小人的窗口一直显示在最上方

建议1所述特性已于 4954639 中加入。

@isHarryh
Copy link
Owner

isHarryh commented Feb 8, 2023

建议2:在选择小人模型的界面添加中文索引(滚轮一个一个猜干员英文名缩写实在是太折磨人了)

建议2所属特性已于 95e6a1a 中加入。

@isHarryh
Copy link
Owner

凯尔希的M3水晶有一个角不显示

经过本人十几个小时的调教, 该问题已于 4aa567b 中得到显著缓解。复盘如下:

问题主因
ArkPets所采取的窗口/画布大小是固定的,这导致有一些比较“大”的小人或动画在渲染时会被裁切掉溢出画布的部分。

解决思路
动态窗口调整:适时地监视画布渲染的结果,对渲染结果进行分析,如果发生溢出或存在溢出风险,则拓展画布和窗口的大小;拓展大小后,若溢出的情况不再存在,则缩小画布和窗口到合适的大小。该解决方案的稳定性尚待探究,因为频繁调整画布和窗口的大小可能会导致渲染不同步,由此发生窗口抖动或画布异常拉伸。

@isHarryh
Copy link
Owner

isHarryh commented Apr 2, 2023

凯尔希的M3水晶有一个角不显示

经过本人十几个小时的调教, 该问题已于 4aa567b 中得到显著缓解。复盘如下:

问题主因
ArkPets所采取的窗口/画布大小是固定的,这导致有一些比较“大”的小人或动画在渲染时会被裁切掉溢出画布的部分。

解决思路
动态窗口调整:适时地监视画布渲染的结果,对渲染结果进行分析,如果发生溢出或存在溢出风险,则拓展画布和窗口的大小;拓展大小后,若溢出的情况不再存在,则缩小画布和窗口到合适的大小。该解决方案的稳定性尚待探究,因为频繁调整画布和窗口的大小可能会导致渲染不同步,由此发生窗口抖动或画布异常拉伸。

此修复引起的窗口抖动和画布异常拉伸过于明显,且反复尝试后未找到缓解方法。现在折中一下,退而求其次, 不再使用动态窗口调整,而改为窗口预调整 (99423d4) 具体如下:

解决思路
窗口预调整:在桌宠启动时,正式上屏渲染前,遍历人物所有动画的部分关键帧。每次遍历后对渲染结果进行分析,最终找到一个最合适的窗口大小,使得大部分动画不会溢出。然后上屏渲染,上屏后不再进行动态监测。

经测试此解决方案工作情况良好,无特殊异样,性能友好。

@isHarryh
Copy link
Owner

isHarryh commented Apr 2, 2023

建议4:开机自启动

建议4所述特性已于 b6ef359 实现。现在启动器不会在启动单个桌宠后立即关闭,可以多次启动桌宠。

@isHarryh isHarryh changed the title [Bug] 小人边界裁剪问题 [Bug] 小人边界裁剪问题与一些建议 Apr 2, 2023
@isHarryh isHarryh added the Good Issue Good for newcomers label May 6, 2023
@isHarryh
Copy link
Owner

建议3:增加跨桌面功能(我有两个显示器,但是小人只能在其中一个显示器上显示)

建议3所述的对多显示屏的支持,已于 5d024f9 实现。现在桌宠可以进入主显示屏上下侧和左右侧的扩展屏中。

至此,本议题的所有内容历时 7 个月已经全部处理完毕。感谢一路陪伴。

@isHarryh isHarryh pinned this issue May 18, 2023
@MegaSteelX
Copy link

2.1.0版本,模型“伊莎玛拉,‘腐化之心’”仍然存在切换形态后裁切错误的问题。 @isHarryh

@isHarryh
Copy link
Owner

2.1.0版本,模型“伊莎玛拉,‘腐化之心’”仍然存在切换形态后裁切错误的问题。 @isHarryh

上述优化只能使得“大部分动画不会溢出”,因为在“窗口过大”和“动画溢出”中需要进行权衡,其具体原因不再赘述。此番操作后确实有少数模型还是会溢出,并不是什么异常现象,但后续会酌情调整。

@isHarryh
Copy link
Owner

isHarryh commented Apr 5, 2024

在先前的版本中,窗口尺寸初始化是通过对 动画的中间时刻帧 进行采样渲染,并计算最大外接矩形边界得到的。同一模型的不同动画的最大外接矩形不同,因此在裁切到第一个动画的外接矩形边界之后,后续动画如果溢出了该边界,便会对该边界进行一定长度的扩张。

3.1.0 版本针对桌宠动画溢出边界的问题做出如下改进:

  1. 只采样中间时刻帧的话只有一帧被采样,现在会间隔若干帧来进行多次采样来提升精确度。用户可以在启动器选项页面调整相关设置来控制精确度(即采样间隔帧数)。
  2. 不同动画的所有采样会进行叠加渲染,最后再计算整体的外接矩形边界,避免了先裁切再扩张导致的信息损失。
  3. 有别于之前一个模型只有一种窗口尺寸的设定,现在如果是多形态的角色模型,就会对每个形态分别进行窗口尺寸的初始化,这样在运行时切换形态便会自动进行窗口尺寸更改,避免了窗口无意义的过大化。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working Enhancement New feature or request Good Issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

4 participants