引用:
原帖由 haibara 于 2010-04-08 20:53 发表 
case SUBTRACT:
return new Blender() {
@Override
public void blend(int[] src, int[] dst, int[] result) {
result[0] = Math.max(0, src[0] + dst[0] - 256);
result[1] = Math.max(0, src[1] + dst[1] - 256);
result[2] = Math.max(0, src[2] + dst[2] - 256);
result[3] = Math.min(255, src[3] + dst[3] - (src[3] * dst[3]) / 255);
}
};
这部是是linearburn
dstPixels[x] = ((int) (dstPixel[3] + (result[3] - dstPixel[3]) * alpha) & 0xFF) << 24 |
((int) (dstPixel[0] + (result[0] - dstPixel[0]) * alpha) & 0xFF) << 16 |
((int) (dstPixel[1] + (result[1] - dstPixel[1]) * alpha) & 0xFF) << 8 |
(int) (dstPixel[2] + (result[2] - dstPixel[2]) * alpha) & 0xFF;
这部是alpha blending
我是看不懂你为何做linearburn之后又做alpha blending...
BlendComposite那个alpha你也说是自定义的图层alpha
只做linearburn就可以了...
不过既然你搞定了,也不深究下去了
引用:
不过我看不懂公式怎么计算出Sa + Da的?
我也不明白SVG的plus
f(Sc,Dc) = Sc + Dc
X = 1
Y = 1
Z = 1
Da' = X.Sa.Da + Y.Sa.(1-Da) + Z.Da.(1-Sa)
按理是
Da' = Sa.Da + Sa.(1-Da) + Da.(1-Sa)
= Sa + Da - Sa.Da
真的不知道如何会变成这样…
Da' = Sa.Da + Da.Sa + Sa.(1 - Da) + Da.(1 - Sa)
= Sa + Da
引用:
原帖由 haibara 于 2010-04-09 14:06 发表 
sfsuvival, 我想问你的PSD是怎么做
如何正确解析TXT中的合成关系?有什么公式吗
我是写Photoshop的脚本 (Script) 制作psd的
我只作過天神乱漫和メルクリア的psd
也只研究过这两个的txt文件
txt有两种
一种是描述图层的 (*.txt,不包括*_info.txt)
另一种是如何使用图层组成表情的 (*_info.txt)
描述图层的txt引用:
#layer_type name left top width height type opacity visible layer_id group_layer_id
layer_type是该图层是普通图层(ArtLayer) 还是图层文件夹(LayerSet/Group)
0是普通图层,2是图层文件夹
type见本帖1L
layer_id是分割后的图的id
group_layer_id是该图层所在的图层文件夹的id
天神乱漫的比较简单
type只有13和16
而且没有group_layer_id
メルクリア的很麻煩
我看過的type有13,14,16,21
而且有group_layer_id
图层名称混乱
还有些txt写是type=left=top=width=height=0的垃圾图层
(对应的是不透明全白32x32的32位图)
描述如何使用图层组成表情的txt
列大概有三种
1. dress为首的列,描述如何组成服装/身体
就是ダミー,沒用的…
天神乱漫
引用:
dress パジャマ diff 1 パジャマポーズA
dress パジャマ diff 2 パジャマポーズA(腕差分)
dress 制服春エプロン diff 1 エプロン制服春ポーズA
dress 制服春エプロン diff 2 エプロン制服春ポーズA(腕差分)
メルクリア
引用:
dress 01 diff a 素体/01a
dress 01 diff b 素体/01b
dress 01 diff c 上乗せ/c指_通常
dress 01 diff c 素体/01c
dress 01 diff TA 素体/01TA
第二栏+第四栏是该组合的名称
第五栏是图层位置(素体/01a->”素体”图层文件夹下的”01a”图层)
虽说是组合
但不一定将其合并就了事
如上述メルクリア的
dress 01 diff c 上乗せ/c指_通常
dress 01 diff c 素体/01c
这个要”素体/01c” +face+”上乗せ/c指_通常” 依次迭上去
因为face会盖过手指
所以要用”上乗せ/c指_通常”盖上去
2. face为首的列,描述如何组成表情
天神乱漫
引用:
face 01 base 通常1
face 02 base 笑顔1
face 03 base 真剣
メルクリア
引用:
face face01 base 表情/眉/01_02_03_04_14_22
face face01 base 表情/目/01_02_06_13_21
face face01 base 表情/口/01
face face01 base 表情/頬hi/01_02_06_07_08_11_12_13_14_15_16_17_18_21
第二栏是该组合的名称
第四栏是图层位置
3. rename为首的列,用来重命名以上组合
メルクリア
引用:
rename dress 制服1 01
rename diff 腕上げ a
rename face 通常 face01
第二栏是组合类型(diff是dress列的diff)
将第四栏的名称重命名为第三栏
01->制服1
a->腕上げ
face01->通常
合成基本就是将face的组合迭在dress的组合上
例外就是上面提到的”素体/01c” +face+”上乗せ/c指_通常”
完...
[
本帖最后由 sfsuvival 于 2010-04-19 20:49 编辑 ]