minecraft吧 关注:2,576,380贴子:32,153,289
  • 6回复贴,共1

[求助] 可能是进错吧系列: 想问一下关于羊毛像素画的问题

取消只看楼主收藏回复

我在写一个自动生成 '一键生成像素画的mcfunction' 的东西
功能是这样的: 读入一个图像文件,读入材质信息(羊毛对应的色号),生成由setblock命令组成的能够产生像素画的mcfunction文件.
思路是这样的: 把图片对应的rgb矩阵读进来,然后对照羊毛的色号,计算在rgb色彩空间上最能代替某一像素色彩的羊毛的id(包括附加值).
我的具体算法是这样的: 首先定义rgb空间上的距离(或者平方距离),羊毛到某一像素点的rgb空间平方距离=(r通道取值之差)^2+(g通道取值之差)^2+(b通道取值之差)^2. 然后读入图片rgb矩阵,对矩阵元素遍历并计算每一个像素点处最佳羊毛id(和此像素点的rgb空间平方距离最小). 遍历的同时选择最佳的羊毛并生成setblock命令写入mcfunction文件. 最后保存并关闭这个mcfunction文件,在游戏中载入并执行这个function就可以了.
问题是生成的像素画和原本的图片相差太大…… 怀疑是选择最佳羊毛的算法有问题…… 希望有人能帮忙改进算法(我知道有现成的像素画生成工具,但不懂它们的原理,如果有此类**开源**的工具的话,也可以推荐一下,多谢)
(之后会贴出对比图和算法源代码(matlab写的))


IP属地:北京1楼2018-09-21 21:35回复
    这是原图和mc像素画对比(请不要在意we红框,之前删了一幅更丑的像素画):
    >原图(皮卡丘做错了什么):

    >对比图(前方高能……):


    IP属地:北京2楼2018-09-21 21:38
    回复
      2026-05-04 08:21:08
      广告
      不感兴趣
      开通SVIP免广告
      该楼层疑似违规已被系统折叠 查看此楼


      IP属地:北京3楼2018-09-21 21:40
      回复
        其中的材质信息如下:

        对应的羊毛id分别是 'minecraft:wool %d' %d表示从0到15顺序下来的整数 色号数据来自minecraft wiki


        IP属地:北京4楼2018-09-21 21:47
        回复
          重复下问题
          皮卡丘很崩坏 我很伤心 像素画生成的时候应该如何选择合适的羊毛? 能否提供算法 或相关的开源工具?
          多谢


          IP属地:北京5楼2018-09-21 21:48
          收起回复
            啊 对了 那个rgba数组里边最后一项是指alpha值 本来我还想在备选列表里边加上染色玻璃来处理包含了透明通道的图片的…… 然而似乎不透明的情况都没有处理好 所以暂时没有用到


            IP属地:北京6楼2018-09-21 21:51
            回复
              按hsv空间计算的结果 看上去好像是hsv椎体的高度不够 我明天试试看能不能根据输入图像动态调节这个椎体的高度:

              色彩库什么的明天再写吧 先谢过a324大佬


              IP属地:北京11楼2018-09-22 00:01
              收起回复