解決)部分的に透過?された画像表示

アバター
こめかみ
記事: 104
登録日時: 2017年9月06日(水) 19:34
連絡を取る:

解決)部分的に透過?された画像表示

投稿記事by こめかみ » 2023年4月06日(木) 22:50

上手く説明しづらいのですが、
・マップを隠すように画像(障子)を左右から開閉するように移動させたい
・障子の背景にはシルエット(笹や月)が透過?している
・移動するのはあくまで障子だけでシルエットの位置は固定
・障子が覆いかぶさった部分のみシルエットを表示したい(マップには表示したくない)

障子とシルエットを統合した画像を複数枚用意してアニメーション風にする以外で
上記を行いたいのですが、何か方法はあるでしょうか?
添付ファイル
1.png
2.png
3.png
最後に編集したユーザー こめかみ on 2023年4月25日(火) 00:36 [ 編集 3 回目 ]

this
記事: 9
登録日時: 2023年4月16日(日) 01:39

Re: 部分的に透過?された画像表示

投稿記事by this » 2023年4月19日(水) 22:40

面白い演出ですね。
純粋に興味がわきましたが、マップとピクチャの間柄でその表現は難しいかと思います。

一案として、実行時に現在マップをピクチャ化してしまう方法が考えられます。

障子| マップ画像 |障子

【ピクチャ番号(表示階層)】
障子(右):1
障子(左):2
マップ画像:4
月と笹:3

月と笹とマップ画像は最初から表示させておきます。
(月と笹はマップ画像の後ろに隠れた状態)
障子を閉めるタイミングに合わせてマップ画像の両端をトリミングしていくと
障子より上の月と笹が少しずつ現れます。
アバター
こめかみ
記事: 104
登録日時: 2017年9月06日(水) 19:34
連絡を取る:

Re: 部分的に透過?された画像表示

投稿記事by こめかみ » 2023年4月24日(月) 01:10

this様
ご回答ありがとうございます。
障子に限らずなのですが、扉のようなものが閉まると、そこにシーンに合わせたイラストが浮かび上がってるという表現が行いたく質問させて頂きました(シーンやマップの切り替えの合間にアイキャッチ風に使用したい次第です)

ご提案頂いた方法への質問なのですが
・表示する予定のマップを事前にスクショなりをしてからピクチャ化ということでしょうか?
・ピクチャの端をトリミングしていくというのは、動的に行う方法があるのでしょうか?
それとも障子の動きに合わせて端を徐々に削ったものを複数枚用意するということでしょうか?

理想としてはリアルタイムの好きなタイミングで障子+シルエットの開閉を表示させたかったのですが、仕様上難しいでしょうか?
"プレイ中のゲーム画面をリアルタイムで(任意のトリミングサイズで)スクショしてピクチャに反映できるプラグイン"があればと思ったのですが、こちらも簡単には実装できない内容でしょうか?


this さんが書きました:面白い演出ですね。
純粋に興味がわきましたが、マップとピクチャの間柄でその表現は難しいかと思います。

一案として、実行時に現在マップをピクチャ化してしまう方法が考えられます。

障子| マップ画像 |障子

【ピクチャ番号(表示階層)】
障子(右):1
障子(左):2
マップ画像:4
月と笹:3

月と笹とマップ画像は最初から表示させておきます。
(月と笹はマップ画像の後ろに隠れた状態)
障子を閉めるタイミングに合わせてマップ画像の両端をトリミングしていくと
障子より上の月と笹が少しずつ現れます。
人喰いマカロン
記事: 12
登録日時: 2022年4月12日(火) 11:08

Re: 部分的に透過?された画像表示

投稿記事by 人喰いマカロン » 2023年4月24日(月) 01:21

thisさんがご提案されていることを実現させるのは相当難しいというか無理がありますね。
そういったプラグインも提供されていないですし、そもそも何をどうしたら動的にマップのスクショを取ったり、
動的にトリミングできるというのでしょうか。

そんなややこしいことをせずとも、実現させる方法はあります。
ちと美しくない方法ですし、ファイル容量は増えてしまいますが、
ピクチャの移動は使わずに、すべてアニメーションとして、一枚ずつ描画していく方法なら
それっぽく見えるのではないでしょうか。

要するに、こみかみさんが上げてくださっているサンプル画像を、
もっとフレーム数を増やして小刻みに描画するのです。

かなり力技ですが、フレーム枚数を増やして描画速度を早くすれば、
ヌルヌル動いているように見えると思います。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 部分的に透過?された画像表示

投稿記事by Plasma Dark » 2023年4月24日(月) 03:18

面白そうだったのでピクチャでピクチャをマスクするプラグインのサンプルを書いて試してみました。
スクショを貼っておきますが、やりたいことはこういうことで合っているでしょうか。

そもそも何をどうしたら動的にマップのスクショを取ったり、
動的にトリミングできるというのでしょうか。


前者はメニュー画面を開くためにマップのスクショを取る方法が標準搭載されているので、それを使えば実現可能です。ピクチャとして利用するにはひと工夫必要ですが。
後者はpixi.jsのmaskを利用することで比較的手軽に実現できます。
私が書いたプラグインのサンプルもその方法を使っているので、よろしければ参考にしてください。

image_20230424_031544.png

image_20230424_031545.png

image_20230424_031547.png

image_20230424_031548.png
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 部分的に透過?された画像表示

投稿記事by Plasma Dark » 2023年4月24日(月) 03:21

書き込みひとつにつき4枚までしか画像はアップロードできないのでした。
先ほどの続きと、イベントコマンドです。

image_20230424_031549.png

image_20230424_031551.png

スクリーンショット 2023-04-24 031932.png
アバター
こめかみ
記事: 104
登録日時: 2017年9月06日(水) 19:34
連絡を取る:

Re: 部分的に透過?された画像表示

投稿記事by こめかみ » 2023年4月24日(月) 17:26

人喰いマカロン様
アニメーションで作ろうかとも思ったのですが、複数のパターンを作るとなった時に手間が掛かりそうだという理由で、今回はPlasma Dark様のプラグインを利用させて頂こうと思います。
ご回答頂いたのに申し訳ありません。
(アニメーションの場合は一度作ってしまえばあとは流すだけというメリットもあるので、ケースバイケースで使い分けれればと思います)
アバター
こめかみ
記事: 104
登録日時: 2017年9月06日(水) 19:34
連絡を取る:

Re: 部分的に透過?された画像表示

投稿記事by こめかみ » 2023年4月24日(月) 17:55

Plasma Dark様
わざわざプラグインを作って頂きありがとうございます。
想定通りの表現を行うことができました!
1つめ(龍のシルエット)は左右の障子画像でそれぞれ処理を行ってできました。
2つめ (女の子)のように、色調は変えず帯画像の縦移動に映し込むなど、使い道が色々とありそうです。

※とは言うものの、どういう原理で処理されているのかイマイチ理解が及ばずで :?
2つめの水色の帯なのですが、これを濃い色(帯の枠の青色)にしたり、透明にすると映らなくなってしまいます。
赤に塗ると映り込みました。重ねる画像間の色調や明るさによって変わるのでしょうか?
添付ファイル
shojigif.gif
shojigif.gif (619.61 KiB) 閲覧数: 895 回
obigifs.gif
obigifs.gif (630 KiB) 閲覧数: 895 回
this
記事: 9
登録日時: 2023年4月16日(日) 01:39

Re: 部分的に透過?された画像表示

投稿記事by this » 2023年4月24日(月) 23:48

解決して何よりです。
さすがPlasma Darkさんですね。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: 部分的に透過?された画像表示

投稿記事by Plasma Dark » 2023年4月25日(火) 00:03

2つめの水色の帯なのですが、これを濃い色(帯の枠の青色)にしたり、透明にすると映らなくなってしまいます。
赤に塗ると映り込みました。重ねる画像間の色調や明るさによって変わるのでしょうか?


pixi.jsをさほど読み込んでいないので、挙動からの推測になりますが、恐らくマスク画像のRGB値のRが大きい部分ほど不透明度が大きくなる(赤要素が大きいほど、くっきりと映る)仕様なのだと思います。

白は(255, 255, 255) でR = 255ですので、不透明にならずに表示されます。
黒は(0, 0, 0) で R = 0ですので、不透明度0となって表示されなくなります。

“MV:質問” へ戻る