透明影絵セーバー バグトラッカー バグなどの報告はこのエントリにコメントしてください。 TypeKey云々は関係ないです。アカウントなくてもコメントできます。 前の記事 次の記事 コメント すし太郎 2010年7月25日 23:47 使われている技術に興味があります。 可能であればソースコードを見せて頂けないでしょうか? daulin 2010年7月26日 23:58 thank for your little program~It's quite funny!哈哈 NAOYA(admin) 2010年7月27日 21:53 >すし太郎さん うーん、ソースコードですか…全体を公開するのはちょっとあれなので、透過処理部分のHLSLでも置いておきます //-------------------------------------------------------------------------------------- // // WPF ShaderEffect HLSL Template // //-------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------- // Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.) //----------------------------------------------------------------------------------------- float4 colorFilter : register(C0); //-------------------------------------------------------------------------------------- // Sampler Inputs (Brushes, including ImplicitInput) //-------------------------------------------------------------------------------------- sampler2D implicitInputSampler : register(S0); //-------------------------------------------------------------------------------------- // Pixel Shader //-------------------------------------------------------------------------------------- float4 main(float2 uv : TEXCOORD) : COLOR { float4 color = tex2D(implicitInputSampler, uv); float4 color2; float avg = (color.r + color.g + color.b) / 3; color2.r = avg; color2.g = avg; color2.b = avg; if (avg < 0.5) { color2.a = 1.0; }else{ color2.a = 0.0; color2.r = 0; color2.b = 0; color2.g = 0; } return color2; } あとは「WPF HLSL」あたりでググってみてください。 ちなみにHLSL以外の部分は、ほぼWPF標準のコントロール(MediaElement)を使っているだけなので大したことはないです。 sa 2010年7月29日 20:15 windows7 home~ 32bit にインストールしましたが 指定時間になっても動作しません。 動画ファイルの不良かと思いましたが、 xpで実行したところ、問題ないようです。 雫亜希 2010年7月29日 22:18 RGB足して平均出してるのか。 グレースケール化して、その値をアルファチャンネルに設定してら、綺麗に透過できるんじゃないかと、思いました。 以上 水無月純でした。mixiでは名前違うねんw NAOYA(admin) 2010年7月30日 13:03 >saさん このスクリーンセーバーはWPFのMediaElementを使っていて、それはWindows Media Playerとそれが利用するコーデックに強く依存しているようです。 一度WMPで動画が再生できるか試してみてください。 もし再生できなければ何らかの外部コーデックをインストールする必要があるかもしれません。 MP4ではなくWMVであればほぼ確実に再生できると思いますが、ネット上の動画はFLVあるいはMP4が多いんですよね…。 >雫亜希さん どうも色関係の知識があまりないので、正しいグレースケール化の方法が分からず、とりあえず適当に似非グレースケール化してます。 透過処理は、もともと「Bad Apple!!影絵」限定で作るつもりだったので、RGBが(127,127,127)以下は完全不透明、それ以外は完全透明にしています。でもあまり一般の動画には向いていませんね…。 ただ、この部分はHLSLでやっているので、WPF側から動的にパラメータを渡す方法が分りません。 あらかじめいくつかの固定パターンを作っておいて、適用するフィルタを変えることはできるはずなので、試してみようかと思っています(でも今はviliv N5弄りで時間がないので当分無理かも)。 NAOYA(admin) 2010年7月30日 13:11 動的パラメータの件ですが、 Dynamic Compilation - WPF Shader Effects - NyaRuRuの日記を使えば何とかできそうな感じです。 (実は一度見ていたのですが、何か勘違いしていたらしくスルーしてました) NAOYA(admin) 2010年7月30日 14:12 コーデックのほうはそちらで入れてくださいとしか言いようがないようです…。 一応次期バージョンでは設定画面で動画再生判定して、だめなら警告を出すようにしたいと思います。 下手にコーデックを同梱すると、特許やライセンスの問題が絡む可能性があり怖いので(特にGPL)。 SA 2010年7月30日 21:47 >NAOYA様 自前でWMVにエンコード→WMP再生確認 プレビューでは動作可能でした。 win7純正のスクリーンセーバーは動作しますが、 TPSsaverは時間経過(1分)では動作いたしませんでした。 NAOYA(admin) 2010年7月31日 02:25 >SAさん 申し訳ありません、どうも設定保存に新しい仕組みを使ってみたところ、プレビュー時と本番時でexeの起動パスが変わってしまい、読み込めなくなっていたようです。 急遽修正したバージョンをアップします myappのTPSsaver1.1HF1です。 SA 2010年7月31日 15:47 >NAOYA様 迅速な対応ありがとうございます。 HF1にて正常動作いたしました。 以後愛用させていただきます。
NAOYA(admin) 2010年7月27日 21:53 >すし太郎さん うーん、ソースコードですか…全体を公開するのはちょっとあれなので、透過処理部分のHLSLでも置いておきます //-------------------------------------------------------------------------------------- // // WPF ShaderEffect HLSL Template // //-------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------- // Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.) //----------------------------------------------------------------------------------------- float4 colorFilter : register(C0); //-------------------------------------------------------------------------------------- // Sampler Inputs (Brushes, including ImplicitInput) //-------------------------------------------------------------------------------------- sampler2D implicitInputSampler : register(S0); //-------------------------------------------------------------------------------------- // Pixel Shader //-------------------------------------------------------------------------------------- float4 main(float2 uv : TEXCOORD) : COLOR { float4 color = tex2D(implicitInputSampler, uv); float4 color2; float avg = (color.r + color.g + color.b) / 3; color2.r = avg; color2.g = avg; color2.b = avg; if (avg < 0.5) { color2.a = 1.0; }else{ color2.a = 0.0; color2.r = 0; color2.b = 0; color2.g = 0; } return color2; } あとは「WPF HLSL」あたりでググってみてください。 ちなみにHLSL以外の部分は、ほぼWPF標準のコントロール(MediaElement)を使っているだけなので大したことはないです。
sa 2010年7月29日 20:15 windows7 home~ 32bit にインストールしましたが 指定時間になっても動作しません。 動画ファイルの不良かと思いましたが、 xpで実行したところ、問題ないようです。
雫亜希 2010年7月29日 22:18 RGB足して平均出してるのか。 グレースケール化して、その値をアルファチャンネルに設定してら、綺麗に透過できるんじゃないかと、思いました。 以上 水無月純でした。mixiでは名前違うねんw
NAOYA(admin) 2010年7月30日 13:03 >saさん このスクリーンセーバーはWPFのMediaElementを使っていて、それはWindows Media Playerとそれが利用するコーデックに強く依存しているようです。 一度WMPで動画が再生できるか試してみてください。 もし再生できなければ何らかの外部コーデックをインストールする必要があるかもしれません。 MP4ではなくWMVであればほぼ確実に再生できると思いますが、ネット上の動画はFLVあるいはMP4が多いんですよね…。 >雫亜希さん どうも色関係の知識があまりないので、正しいグレースケール化の方法が分からず、とりあえず適当に似非グレースケール化してます。 透過処理は、もともと「Bad Apple!!影絵」限定で作るつもりだったので、RGBが(127,127,127)以下は完全不透明、それ以外は完全透明にしています。でもあまり一般の動画には向いていませんね…。 ただ、この部分はHLSLでやっているので、WPF側から動的にパラメータを渡す方法が分りません。 あらかじめいくつかの固定パターンを作っておいて、適用するフィルタを変えることはできるはずなので、試してみようかと思っています(でも今はviliv N5弄りで時間がないので当分無理かも)。
NAOYA(admin) 2010年7月30日 13:11 動的パラメータの件ですが、 Dynamic Compilation - WPF Shader Effects - NyaRuRuの日記を使えば何とかできそうな感じです。 (実は一度見ていたのですが、何か勘違いしていたらしくスルーしてました)
NAOYA(admin) 2010年7月30日 14:12 コーデックのほうはそちらで入れてくださいとしか言いようがないようです…。 一応次期バージョンでは設定画面で動画再生判定して、だめなら警告を出すようにしたいと思います。 下手にコーデックを同梱すると、特許やライセンスの問題が絡む可能性があり怖いので(特にGPL)。
SA 2010年7月30日 21:47 >NAOYA様 自前でWMVにエンコード→WMP再生確認 プレビューでは動作可能でした。 win7純正のスクリーンセーバーは動作しますが、 TPSsaverは時間経過(1分)では動作いたしませんでした。
NAOYA(admin) 2010年7月31日 02:25 >SAさん 申し訳ありません、どうも設定保存に新しい仕組みを使ってみたところ、プレビュー時と本番時でexeの起動パスが変わってしまい、読み込めなくなっていたようです。 急遽修正したバージョンをアップします myappのTPSsaver1.1HF1です。
すし太郎
使われている技術に興味があります。
可能であればソースコードを見せて頂けないでしょうか?
daulin
thank for your little program~It's quite funny!哈哈
NAOYA(admin)
>すし太郎さん
うーん、ソースコードですか…全体を公開するのはちょっとあれなので、透過処理部分のHLSLでも置いておきます
//--------------------------------------------------------------------------------------
//
// WPF ShaderEffect HLSL Template
//
//--------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
// Shader constant register mappings (scalars - float, double, Point, Color, Point3D, etc.)
//-----------------------------------------------------------------------------------------
float4 colorFilter : register(C0);
//--------------------------------------------------------------------------------------
// Sampler Inputs (Brushes, including ImplicitInput)
//--------------------------------------------------------------------------------------
sampler2D implicitInputSampler : register(S0);
//--------------------------------------------------------------------------------------
// Pixel Shader
//--------------------------------------------------------------------------------------
float4 main(float2 uv : TEXCOORD) : COLOR
{
float4 color = tex2D(implicitInputSampler, uv);
float4 color2;
float avg = (color.r + color.g + color.b) / 3;
color2.r = avg;
color2.g = avg;
color2.b = avg;
if (avg < 0.5) {
color2.a = 1.0;
}else{
color2.a = 0.0;
color2.r = 0;
color2.b = 0;
color2.g = 0;
}
return color2;
}
あとは「WPF HLSL」あたりでググってみてください。
ちなみにHLSL以外の部分は、ほぼWPF標準のコントロール(MediaElement)を使っているだけなので大したことはないです。
sa
windows7 home~ 32bit にインストールしましたが
指定時間になっても動作しません。
動画ファイルの不良かと思いましたが、
xpで実行したところ、問題ないようです。
雫亜希
RGB足して平均出してるのか。
グレースケール化して、その値をアルファチャンネルに設定してら、綺麗に透過できるんじゃないかと、思いました。
以上 水無月純でした。mixiでは名前違うねんw
NAOYA(admin)
>saさん
このスクリーンセーバーはWPFのMediaElementを使っていて、それはWindows Media Playerとそれが利用するコーデックに強く依存しているようです。
一度WMPで動画が再生できるか試してみてください。
もし再生できなければ何らかの外部コーデックをインストールする必要があるかもしれません。
MP4ではなくWMVであればほぼ確実に再生できると思いますが、ネット上の動画はFLVあるいはMP4が多いんですよね…。
>雫亜希さん
どうも色関係の知識があまりないので、正しいグレースケール化の方法が分からず、とりあえず適当に似非グレースケール化してます。
透過処理は、もともと「Bad Apple!!影絵」限定で作るつもりだったので、RGBが(127,127,127)以下は完全不透明、それ以外は完全透明にしています。でもあまり一般の動画には向いていませんね…。
ただ、この部分はHLSLでやっているので、WPF側から動的にパラメータを渡す方法が分りません。
あらかじめいくつかの固定パターンを作っておいて、適用するフィルタを変えることはできるはずなので、試してみようかと思っています(でも今はviliv N5弄りで時間がないので当分無理かも)。
NAOYA(admin)
動的パラメータの件ですが、
Dynamic Compilation - WPF Shader Effects - NyaRuRuの日記を使えば何とかできそうな感じです。
(実は一度見ていたのですが、何か勘違いしていたらしくスルーしてました)
NAOYA(admin)
コーデックのほうはそちらで入れてくださいとしか言いようがないようです…。
一応次期バージョンでは設定画面で動画再生判定して、だめなら警告を出すようにしたいと思います。
下手にコーデックを同梱すると、特許やライセンスの問題が絡む可能性があり怖いので(特にGPL)。
SA
>NAOYA様
自前でWMVにエンコード→WMP再生確認
プレビューでは動作可能でした。
win7純正のスクリーンセーバーは動作しますが、
TPSsaverは時間経過(1分)では動作いたしませんでした。
NAOYA(admin)
>SAさん
申し訳ありません、どうも設定保存に新しい仕組みを使ってみたところ、プレビュー時と本番時でexeの起動パスが変わってしまい、読み込めなくなっていたようです。
急遽修正したバージョンをアップします
myappのTPSsaver1.1HF1です。
SA
>NAOYA様
迅速な対応ありがとうございます。
HF1にて正常動作いたしました。
以後愛用させていただきます。