T TIDE_LIU Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-26 #1 遇到拦路虎,服装图片(实物图非效果图),人物动作、服装褶皱均不同,要实现动态 更换面料(面料不限),还要保持服装的褶皱效果,该如何实现。可以使用辅助图片。
娃 娃娃 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-26 #3 我也没有搞过,不过有用过这方面的软件,基本上说个思路吧 1、首先肯定你说的那个褶皱的实现绝对不是个容易的事,我 觉得是不是可以和Photoshop中分图层一样,把你面料的图 层做的透明一些,把下面的褶皱露出一点,不过好象会连下 面的图片也显示出来,不太可行。 2、关于面料的更换,我没有见过可以直接更换的(那恐怕就要 用到自动寻找边缘之类的技术了),大部分的解决方法都是 用表格,就是让用户依据服装图片描出来一个框架表格,然 后在表格中添入面料图片。基本上是这样,细节我也描述不 太清楚。
我也没有搞过,不过有用过这方面的软件,基本上说个思路吧 1、首先肯定你说的那个褶皱的实现绝对不是个容易的事,我 觉得是不是可以和Photoshop中分图层一样,把你面料的图 层做的透明一些,把下面的褶皱露出一点,不过好象会连下 面的图片也显示出来,不太可行。 2、关于面料的更换,我没有见过可以直接更换的(那恐怕就要 用到自动寻找边缘之类的技术了),大部分的解决方法都是 用表格,就是让用户依据服装图片描出来一个框架表格,然 后在表格中添入面料图片。基本上是这样,细节我也描述不 太清楚。
T TIDE_LIU Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-26 #4 我做了个实验,将图片中服装部分抠去,将抠去部分半透明,一共用3层, 最下面一层已抠去服装后图片,第二层是面料填充区域,最上面一层是 半透明的抠去部分,已经有些效果了,但是第二层的区域如何确定,最 上面图层的透明度如何控制,请大家多多提思路.
我做了个实验,将图片中服装部分抠去,将抠去部分半透明,一共用3层, 最下面一层已抠去服装后图片,第二层是面料填充区域,最上面一层是 半透明的抠去部分,已经有些效果了,但是第二层的区域如何确定,最 上面图层的透明度如何控制,请大家多多提思路.
H huazai Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-27 #5 你作的好像是个难点啊,国外有比较好的软件,我以前看过,人体啊,沙发,窗帘,都可以 实时换,
飞 飞雪轩主 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-27 #6 这个可不用DELPHI,用游戏开发工具就可实现。比如说《虚拟人生》
T TIDE_LIU Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-27 #7 斑竹快出来帮帮忙! bitblt的用法(d6帮助中没有,就是图像透明度的控制), 不规则区域的确定方法, 这两个问题解决了,这个问题就可以结了.
H huazai Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-28 #8 好像不规则区域用createpolygonrgn()
冰 冰冷的雨 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-28 #11 bitblt的用法看WIN API文档就有 不规则区域的确定方法:扫描图象的scanline, 取选定色的连续坐标, 认为是一个 height=1的rect,用CreateRectRgn生成region, 再用CombineRgn(.....RGN_OR)与先前 生成的region合并生成新的region.重复扫描完所有扫描线后就得到一个region了.
bitblt的用法看WIN API文档就有 不规则区域的确定方法:扫描图象的scanline, 取选定色的连续坐标, 认为是一个 height=1的rect,用CreateRectRgn生成region, 再用CombineRgn(.....RGN_OR)与先前 生成的region合并生成新的region.重复扫描完所有扫描线后就得到一个region了.
龙 龙飞九天 Unregistered / Unconfirmed GUEST, unregistred user! 2002-07-29 #12 有一个简单方法,如你前面所说,将图像分为三层 底层为人物,服装部分抠去,Image1, 中间层为面料填充,区域由抠去的服装部分确定,Image2,抠去服装部分处理为白底黑色区域 上层为衣服褶皱,为服装抠去部分处理成灰度,PaintBox1, 所填充面料,image3, 褶皱,image4, 将面料定义画笔 image2.canvas.brush.bitmap:=image3.picture.bitmap; 填充image4的区域 image2.canvas.floodfill(x,y,clWhite,fsBorder);//x,y在服装区域内 画将褶皱画到PaintBox PaintBox1.Refresh(); Bitblt(PaintBox1.canvas.handle,0,0,Image4.Width,Image4,Height, Image4.canvas.Handle,0,0,srcand ); ok
有一个简单方法,如你前面所说,将图像分为三层 底层为人物,服装部分抠去,Image1, 中间层为面料填充,区域由抠去的服装部分确定,Image2,抠去服装部分处理为白底黑色区域 上层为衣服褶皱,为服装抠去部分处理成灰度,PaintBox1, 所填充面料,image3, 褶皱,image4, 将面料定义画笔 image2.canvas.brush.bitmap:=image3.picture.bitmap; 填充image4的区域 image2.canvas.floodfill(x,y,clWhite,fsBorder);//x,y在服装区域内 画将褶皱画到PaintBox PaintBox1.Refresh(); Bitblt(PaintBox1.canvas.handle,0,0,Image4.Width,Image4,Height, Image4.canvas.Handle,0,0,srcand ); ok