Board logo

标题: [求助] ev合成,英雄×魔王 [打印本页]

作者: airlose    时间: 2010-02-22 22:42     标题: ev合成,英雄×魔王



两个对应文件名是
ev001.dump.JPG
EV001_01.dump.JPG
最近想认真学下合成
所以先从合成ev开始好了
嗯,偶初学乍练,啥都不懂,所以扔个例子上来
可以给偶当指引。。。
嗯,最好是具体哪个工具哪个步骤,这样子偶才明白。。。
作者: haibara    时间: 2010-02-22 22:52

我觉得这个例子不好

原因在于必须动用photoshop,firework,也就是说要手动定位坐标

根据我的汇总来看,离现在最近的比较合适学习的例子是夢喰い-つるみく式ゲーム製作-
引用:
原帖由 haibara 于 2009-12-12 19:57 发表

夢喰い-つるみく式ゲーム製作-
作用对象:事件,立绘
合成类型:差分合成
使用工具:MagickMerger,配置Alpha Blending,DirectMuxer
注意事项:事件使用MagickMerger,但有个例外;立绘使用DirectMuxer

[quote]
<CustomProfile>
  <Name>Alpha Blending</Name>
  <Setting>
    <Match>(.+\d+z?)([^\d_z]{1,2})\.png</Match>
    <Catch>$1.png</Catch>
    <Merge>$1_$2.png</Merge>
    <Command>[composite] [Match] [Catch] png24:[Merge]</Command>
  </Setting>
</CustomProfile>
[/quote]

[ 本帖最后由 haibara 于 2010-02-22 22:55 编辑 ]
作者: soul1000    时间: 2010-02-22 22:57

这个游戏提取出来就是JPG格式的??有空我也提取出来合成一下。。。。
建议初学合成不要合这种,建议合成我下图的这种



上面这样图看似复杂,其实是最简单的了(我觉得),用PhotoShop处理很容易,用BatchBlender或MagickMerger的话就更弱智(前提是可正则)

建议先用photoshop合成一下(PhotoShop合成是最基本的,一定要懂),等会用PS以后,再学正则用三剑客批量!!!老实说三剑客比许多其他合成软件要强大得多!!!(使用过各种各样的合成软件后得出的结论)
PS:PhotoShop的批量也十分强大的说!!!!不过很麻烦且速度很慢。。。。。

[ 本帖最后由 soul1000 于 2010-02-22 23:06 编辑 ]
作者: airlose    时间: 2010-02-23 08:36

引用:
原帖由 soul1000 于 2010-02-22 22:57 发表
这个游戏提取出来就是JPG格式的??有空我也提取出来合成一下。。。。
建议初学合成不要合这种,建议合成我下图的这种

http://i473.photobucket.com/ ...
提出来是BMP的,因为要上传,所以就转了两个转JPG
photoshop偶也是小白,啥米都不懂。。。
可以具体说下么?

[ 本帖最后由 airlose 于 2010-02-23 12:08 编辑 ]
作者: airlose    时间: 2010-02-23 08:39

引用:
原帖由 haibara 于 2010-02-22 22:52 发表
我觉得这个例子不好

原因在于必须动用photoshop,firework,也就是说要手动定位坐标

根据我的汇总来看,离现在最近的比较合适学习的例子是夢喰い-つるみく式ゲーム製作-
这个游戏偶米有啊,那回头扔个
[020830][アクティブ]DISCIPLINE-The record of a Crusade-
这个应该差不多的。。。

[ 本帖最后由 airlose 于 2010-02-23 12:13 编辑 ]
作者: airlose    时间: 2010-02-23 13:12

http://i139.photobucket.com/albums/q308/airlose/eg73edt.jpg

http://i139.photobucket.com/albums/q308/airlose/eg73aedt.jpg

http://i139.photobucket.com/albums/q308/airlose/eg73bedt.jpg

对应文件名是

eg73.edt.bmp
eg73a.edt.bmp
eg73c.edt.bmp

这个是DISCIPLINE的CG
这个例子可以吧。。。
作者: haibara    时间: 2010-02-23 14:50

引用:
原帖由 airlose 于 2010-02-23 13:12 发表


对应文件名 ...
在合成前我们先要判断这是什么合成类型:1,alpha blending;2,color blending
判断的标准就是差分图是否是32位,如果是则是alpha blending,反之亦然

对于alpha blending,可以使用DirectMuxer和MagickMerger,对于color blending要用BatchBlender

对于你的例子,我根据系统知道是color blending的,所以要用BatchBlender

1,打开BatchBlender,选目录

2,filter color选蓝色(可能)

3,blending profile选color blending

4,点击config
修改source regex为$1.edt.bmp
修改delta regex为(ev\d+)[a-z]\.edt\.bmp
其它不变,保存

5,点击filter

6,点击generate command

7,点击detail launch
作者: soul1000    时间: 2010-02-23 14:54

引用:
对于alpha blending,可以使用DirectMuxer和MagickMerger,对于color blending要用BatchBlender

对于你的例子,我根据系统知道是color blending的,所以要用BatchBlender
我猜是color blending

PhotoShop的话将蓝色的图片整张贴到原图上,然后再把蓝色的部分给去掉就是了

BatchBlender 就
Filtercolor 0x0000fe    ??????
ProfileOption
SourceRegEx:$1edt.bmp
DeltaRegEx:(\w\w\d\d)[a-z]\edt.bmp
CommandRegEx:[Tool] -s [Source] -d [Delta]

[ 本帖最后由 soul1000 于 2010-02-23 15:00 编辑 ]
作者: kk    时间: 2010-02-23 15:52

引用:
原帖由 haibara 于 2010-02-22 22:52 发表
我觉得这个例子不好

原因在于必须动用photoshop,firework,也就是说要手动定位坐标

根据我的汇总来看,离现在最近的比较合适学习的例子是夢喰い-つるみく式ゲーム製作-
說起來,偶好像5年前用C語言寫過一個合成程序.
當時是因為,自截某遊戲的CG過大,所以分別對上,下截圖,再用此程序合成.
應該可以作為參考來做坐標自動定位的程序的.如果 haibara 有興趣的話,偶也可以把源碼發出來的.

另外,樓上的也不要太露骨了.
作者: haibara    时间: 2010-02-23 16:48

引用:
原帖由 kk 于 2010-02-23 15:52 发表

說起來,偶好像5年前用C語言寫過一個合成程序.
當時是因為,自截某遊戲的CG過大,所以分別對上,下截圖,再用此程序合成.
應該可以作為參考來做坐標自動定位的程序的.如果 haibara 有興趣的話,偶也可以把源碼發出來的 ...
自动定位,ps都做不到(它的photomerge不稳定的说),厉害呀,总之学习下
作者: airlose    时间: 2010-02-23 16:54

引用:
原帖由 haibara 于 2010-02-23 14:50 发表


在合成前我们先要判断这是什么合成类型:1,alpha blending;2,color blending
判断的标准就是差分图是否是32位,如果是则是alpha blending,反之亦然

对于alpha blending,可以使用DirectMuxer和MagickMerge ...
这个成功了,嘎嘎,偶总算会合成了,中间就几个失败的,继续改进中
那个正则的话应该哪里学的?以前只是用正则处理些文本文档,就知道几个命令。。。
作者: haibara    时间: 2010-02-23 17:28

引用:
原帖由 airlose 于 2010-02-23 16:54 发表

这个成功了,嘎嘎,偶总算会合成了,中间就几个失败的,继续改进中
那个正则的话应该哪里学的?以前只是用正则处理些文本文档,就知道几个命令。。。
知道语法的话,多多练习就是
作者: kk    时间: 2010-02-24 01:53

引用:
#include<stdio.h>
struct bmp
{
    int dibid;
    long filesize;
    long re;
    long offset;

    long header;
    long width;
    long heigth;
    int planes;
    int bpp;
    long com;
    long datasize;
    long hre;
    long vre;
    long colors;
    long icolors;
};
int chkdata(char *p1,char *p2,int size)
{
    while(size)
    {
        if(*p1!=*p2)return 0;
        p1++;p2++;size--;
    };
    return 1;
};
main()
{
    char *p1,*p2;
    int y1=0,y2;
    FILE *f1,*f2,*f3;
    struct bmp bmphead[2];
    /*初始化,打开文件,申请内存,写文件头*/
    f1=fopen("g:\\windows\\desktop\\1.bmp","rb");
    f2=fopen("g:\\windows\\desktop\\2.bmp","rb");
    f3=fopen("g:\\windows\\desktop\\6.bmp","wb");
    fread(&bmphead[0],54,1,f2);
    fread(&bmphead[1],54,1,f1);
    fwrite(&bmphead[0],54,1,f3);
    p1=(char *)malloc(bmphead[0].width*3);
    p2=(char *)malloc(bmphead[0].width*3);
    /*下部文件直接拷贝*/
    for(y2=0;y2<bmphead[0].heigth;y2++)
    {
        fread(p1,bmphead[0].width*3,1,f2);
        fwrite(p1,bmphead[0].width*3,1,f3);
    };
    /*上部文件处理*/
    while(!chkdata(p1,p2,bmphead[1].width*3))
    {
        fread(p2,bmphead[1].width*3,1,f1);
        if(feof(f1))break;
        y1++;
    };
    bmphead[0].heigth+=bmphead[1].heigth-y1;/*计算出f3的高度*/
    for(;y1<bmphead[1].heigth;y1++)
    {
        fread(p1,bmphead[1].width*3,1,f1);
        fwrite(p1,bmphead[1].width*3,1,f3);
    };
    /*重写文件头及关闭文件*/
    rewind(f3);
    fwrite(&bmphead[0],54,1,f3);
    fclose(f1);fclose(f2);fclose(f3);
}
看了下日期,是2006/2/5,當時應該是學C語言不久(其實偶C語言學的時間不是很長),就表扔磚頭了.

嘛,偶解釋一下程序流程吧.
首先,這是專門針對"24位色的BMP無損無壓縮圖像"用的.
作用在於,對一幅超過屏幕分辨率大小的CG分別進行上下截圖,再用此程序合成.

BMP的圖像數據是自下而上,從左到右的.
所以首先載入的是下部的圖片,再載入上部圖片.
把下部的圖片載入完成後,再用下部圖片的最後一條線做為識別.
以640x480圖像,換成坐標來說,就是下部圖片的 (0,0)至(0,639) 這一條線做為識別,
再找出上部圖片的同一條線,進行合並處理.

看起來似乎很容易會判斷錯誤,但其實不會的.
因為遊戲CG的精度很高,除非是弄到矢量數據,否則真的很難找出第2條一模一樣的線.

說回跟本主題的關係.
偶看樓主那幾幅圖,似乎也可以用類似的算法.
以小圖的某一條線,作為引導,搜索出大圖同一條線位置,再推算出坐標.
再複雜一點,可以用高是2-3像素的"面"為標識,搜索出大圖同一位置,再推算出坐標.
作者: sfsuvival    时间: 2010-02-24 05:54

LS你忘记了调用free
虽然对此程序来说这是小问题...

[ 本帖最后由 sfsuvival 于 2010-02-24 05:59 编辑 ]
作者: haibara    时间: 2010-02-24 07:30

我怎么觉得不对,应该说差分图边缘(线)不可能与基本图一样的,应该说像素比较接近(按照面搜索,估计与photoshop的photomerge差不多,非常不稳定,而且只能效果更差吧)

ps:有可能我想当然了,不过既然没有这样的合成器,我觉得怎么简单应该是不可能,我以前思考过怎么实现的不过我都假设边缘不一样的

[ 本帖最后由 haibara 于 2010-02-24 08:43 编辑 ]
作者: sailotos    时间: 2010-02-24 08:27

请指点一下,
source regex  
delta regex
这两个选项的填写规则?

老是提示:image not  matched
作者: haibara    时间: 2010-02-24 08:44

引用:
原帖由 sailotos 于 2010-02-24 08:27 发表
请指点一下,
source regex  
delta regex
这两个选项的填写规则?

老是提示:image not  matched
source regex为$1.edt.bmp
delta regex为(ev\d+)[a-z]\.edt\.bmp
作者: airlose    时间: 2010-02-24 11:02

海大,偶现在在合成《光与影的传说》
合成了一部分
还有一部分
7S03A.bmp要匹配到source regex
主文件是
7S03.bmp
7S03A.bmp
后面需要合成的文件名
7S03K2.bmp
7S03K3.bmp
7S03K4.bmp
现在偶合成了7S03.bmp部分
还有7S03A.bmp不会
主要是不知道怎么填写source regex
作者: haibara    时间: 2010-02-24 11:18

引用:
原帖由 airlose 于 2010-02-24 11:02 发表
海大,偶现在在合成《光与影的传说》
合成了一部分
还有一部分
7S03A.bmp要匹配到source regex
主文件是
7S03.bmp
7S03A.bmp
后面需要合成的文件名
7S03K2.bmp
7S03K3.bmp
7S03K4.bmp
现在偶合成了7S03. ...
既然可以匹配到7S03了。那么加个后面A就是了
作者: airlose    时间: 2010-02-24 11:40

引用:
原帖由 haibara 于 2010-02-24 11:18 发表


既然可以匹配到7S03了。那么加个后面A就是了
原来这个只要在后面加A就可以了,懂了~~
作者: kk    时间: 2010-02-24 15:47

引用:
原帖由 haibara 于 2010-02-24 07:30 发表
我怎么觉得不对,应该说差分图边缘(线)不可能与基本图一样的,应该说像素比较接近(按照面搜索,估计与photoshop的photomerge差不多,非常不稳定,而且只能效果更差吧)

ps:有可能我想当然了,不过既然没有这样 ...
嘛,因為偶幾個月前也寫過個差分摳圖工具,
所以偶還是相信這種算法是可行的.

不過這樣討論下去也不會有進展.
要不這樣吧,樓上提供主樓那個<英雄x魔王>的無損素材,上面2張圖就足夠了(注意,是無損,一切算法都是建立在無損的基礎上的).
然後偶試試把程序做出來.不過,最近系統重灌,而且事情不少,時間很難說得下來.

當然,如果偶程序真的做出來的,請 haibara 給偶做一件很簡單的事情.
作者: haibara    时间: 2010-02-24 17:26

引用:
原帖由 kk 于 2010-02-24 15:47 发表

嘛,因為偶幾個月前也寫過個差分摳圖工具,
所以偶還是相信這種算法是可行的.

不過這樣討論下去也不會有進展.
要不這樣吧,樓上提供主樓那個的無損素材,上面2張圖就足夠了(注意,是無損,一切算法都是建立在無損的 ...
与无压缩有关系吗,php没有图像读取类?

我觉得你的算法的前提是color blending

安啦,我也随便测试下,拿大妈的kagura的好了
作者: airlose    时间: 2010-02-24 18:30

http://i139.photobucket.com/albums/q308/airlose/ev001dump-1.jpg
http://i139.photobucket.com/albu ... /EV001_01dump-1.jpg
http://i139.photobucket.com/albums/q308/airlose/ev002adump.jpg
http://i139.photobucket.com/albums/q308/airlose/ev002a_01dump.jpg
http://i139.photobucket.com/albums/q308/airlose/ev002bdump.jpg
多发几张,原版BMP
光与影的传说也合成完了,真够累~~
那个photoshop怎么合成这个的
偶ps是小白中的小白
啥都不会。。。

[ 本帖最后由 airlose 于 2010-02-24 21:06 编辑 ]
作者: kk    时间: 2010-02-25 01:19

haibara都叫偶安了,那偶就安心在肚子裡多養幾只懶蟲算了.LS辛苦了.
作者: haibara    时间: 2010-02-27 17:02

BufferedImage sDelta = ImageIO.read(arg0);
                BufferedImage sBasic = ImageIO.read(arg1);
                byte[] basicData = ((DataBufferByte) sBasic.getData().getDataBuffer()).getData();
                byte[] deltaData = ((DataBufferByte) sDelta.getData().getDataBuffer()).getData();
                byte[] basicLine = new byte[sDelta.getWidth() * 3];
                byte[] deltaLine = new byte[sDelta.getWidth() * 3];
                System.arraycopy(deltaData, 0, deltaLine, 0, deltaLine.length);
                GOTO: for (int y = 0; y < sBasic.getHeight(); y++) {
                        for (int x = 0; x < sBasic.getWidth() - sDelta.getWidth(); x++) {
                                System.arraycopy(basicData, (sBasic.getWidth() * y + x) * 3, basicLine, 0, basicLine.length);
                                if (Arrays.equals(deltaLine, basicLine)) {
                                        System.out.println("x=" + x + "y=" + y);
                                        break GOTO;
                                }
                        }
                }

[ 本帖最后由 haibara 于 2010-02-28 00:06 编辑 ]
作者: kk    时间: 2010-02-28 01:50

貌似改了很多次.
偶只看見 17:35 那次,和現在 00:06 的一次.

偶暫時不是很想學JAVA,只想知道成功了米有?
作者: haibara    时间: 2010-02-28 02:27

引用:
原帖由 kk 于 2010-02-28 01:50 发表
貌似改了很多次.
偶只看見 17:35 那次,和現在 00:06 的一次.

偶暫時不是很想學JAVA,只想知道成功了米有?
改了3次吧,第1次其实就对了,不过不好看,改了后边界问题,然后再改,又忘记像素X3字节。。。

我测试了1个,可以

[ 本帖最后由 haibara 于 2010-02-28 02:31 编辑 ]
作者: kk    时间: 2010-02-28 02:48

引用:
原帖由 haibara 于 2010-02-28 02:27 发表


改了3次吧,第1次其实就对了,不过不好看,改了后边界问题,然后再改,又忘记像素X3字节。。。

我测试了1个,可以
可以了就好,偶當年的設想居然也能老蚌生珠了.

那樣的話,偶再說一點注意的地方好了.
引用:
以小圖的某一條線,作為引導,搜索出大圖同一條線位置,再推算出坐標.
偶這一句其實也是有點隱語的.
線固然是線,但不一定要是最邊的一條線.所以,後面才說是"推算".
作者: haibara    时间: 2010-02-28 03:51

引用:
原帖由 kk 于 2010-02-28 02:48 发表

可以了就好,偶當年的設想居然也能老蚌生珠了.

那樣的話,偶再說一點注意的地方好了.

偶這一句其實也是有點隱語的.
線固然是線,但不一定要是最邊的一條線.所以,後面才說是"推算".
在overlay类型的blending基本可以保证边缘不会差分,但也不一定,至于除边缘以外部分差分是板上钉钉的

至于alpha,color blending自然不可以这样计算,都有自己固定的差分方式

ps: 今天的比赛看了倒胃口,希望今年ARS有好运

[ 本帖最后由 haibara 于 2010-02-28 03:52 编辑 ]
作者: kk    时间: 2010-02-28 15:37

八仙過海,各顯神通.
米有做不出來的程序,只有想不到的程序.祝haibara在合成之路上武運昌隆吧.
話說,那個alpha的,以前寫的摳圖程序,用來摳遊戲裡人物的.因為人物邊緣被模糊化了,所以也做成可以按一定程度模糊摳圖的.
作者: 80119006    时间: 2010-03-12 00:50

引用:
原帖由 soul1000 于 2010-02-22 22:57 发表
这个游戏提取出来就是JPG格式的??有空我也提取出来合成一下。。。。
建议初学合成不要合这种,建议合成我下图的这种

http://i473.photobucket.com/ ...
這太邪惡了吧??

圖這樣拆是怎樣?




欢迎光临 YUKI 飛雪之城 (https://yukict.com/bbs/) Powered by Discuz! 6.0.0