原帖由 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>
原帖由 soul1000 于 2010-02-22 22:57 发表
这个游戏提取出来就是JPG格式的??有空我也提取出来合成一下。。。。
建议初学合成不要合这种,建议合成我下图的这种
http://i473.photobucket.com/ ...
原帖由 haibara 于 2010-02-22 22:52 发表
我觉得这个例子不好
原因在于必须动用photoshop,firework,也就是说要手动定位坐标
根据我的汇总来看,离现在最近的比较合适学习的例子是夢喰い-つるみく式ゲーム製作-
对于alpha blending,可以使用DirectMuxer和MagickMerger,对于color blending要用BatchBlender
对于你的例子,我根据系统知道是color blending的,所以要用BatchBlender
原帖由 haibara 于 2010-02-22 22:52 发表
我觉得这个例子不好
原因在于必须动用photoshop,firework,也就是说要手动定位坐标
根据我的汇总来看,离现在最近的比较合适学习的例子是夢喰い-つるみく式ゲーム製作-
原帖由 kk 于 2010-02-23 15:52 发表
說起來,偶好像5年前用C語言寫過一個合成程序.
當時是因為,自截某遊戲的CG過大,所以分別對上,下截圖,再用此程序合成.
應該可以作為參考來做坐標自動定位的程序的.如果 haibara 有興趣的話,偶也可以把源碼發出來的 ...
原帖由 haibara 于 2010-02-23 14:50 发表
在合成前我们先要判断这是什么合成类型:1,alpha blending;2,color blending
判断的标准就是差分图是否是32位,如果是则是alpha blending,反之亦然
对于alpha blending,可以使用DirectMuxer和MagickMerge ...
原帖由 airlose 于 2010-02-23 16:54 发表
这个成功了,嘎嘎,偶总算会合成了,中间就几个失败的,继续改进中
那个正则的话应该哪里学的?以前只是用正则处理些文本文档,就知道几个命令。。。
#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);
}
原帖由 sailotos 于 2010-02-24 08:27 发表
请指点一下,
source regex
delta regex
这两个选项的填写规则?
老是提示:image not matched
原帖由 airlose 于 2010-02-24 11:02 发表
海大,偶现在在合成《光与影的传说》
合成了一部分
还有一部分
7S03A.bmp要匹配到source regex
主文件是
7S03.bmp
7S03A.bmp
后面需要合成的文件名
7S03K2.bmp
7S03K3.bmp
7S03K4.bmp
现在偶合成了7S03. ...
原帖由 haibara 于 2010-02-24 07:30 发表
我怎么觉得不对,应该说差分图边缘(线)不可能与基本图一样的,应该说像素比较接近(按照面搜索,估计与photoshop的photomerge差不多,非常不稳定,而且只能效果更差吧)
ps:有可能我想当然了,不过既然没有这样 ...
原帖由 kk 于 2010-02-24 15:47 发表
嘛,因為偶幾個月前也寫過個差分摳圖工具,
所以偶還是相信這種算法是可行的.
不過這樣討論下去也不會有進展.
要不這樣吧,樓上提供主樓那個的無損素材,上面2張圖就足夠了(注意,是無損,一切算法都是建立在無損的 ...
以小圖的某一條線,作為引導,搜索出大圖同一條線位置,再推算出坐標.
原帖由 kk 于 2010-02-28 02:48 发表
可以了就好,偶當年的設想居然也能老蚌生珠了.
那樣的話,偶再說一點注意的地方好了.
偶這一句其實也是有點隱語的.
線固然是線,但不一定要是最邊的一條線.所以,後面才說是"推算".
原帖由 soul1000 于 2010-02-22 22:57 发表
这个游戏提取出来就是JPG格式的??有空我也提取出来合成一下。。。。
建议初学合成不要合这种,建议合成我下图的这种
http://i473.photobucket.com/ ...
欢迎光临 YUKI 飛雪之城 (https://yukict.com/bbs/) | Powered by Discuz! 6.0.0 |