2007/03/18(日) [n年前の日記]
#2 [flash][prog] クリッピングってどうやるんだっけ
FLASHで、ワイヤーフレームで地平線を描くようなアレを作りたいなと。昔のCGと言われると脳裏に浮かぶアレ。8bitPC時代の雑誌広告なんかで、PCや電子部品・基板の背景に描かれてるアレ。…google画像検索で探してみると実はほとんど無いみたいだけど。
アレって言っても判んないわな…。こういう感じ。
「月刊マイコン」とか「I/O」なんて言葉に懐かしさを感じた人なら十中八九「ああ、アレか」と思うアレ。
FLASHアニメの素材として扱うだけなので、最初のうちは手で描こうと試みたり。昔は全部、エアブラシや筆で描いてたわけだし。 *1 しかし、作業しているうちに面倒臭くなってきた。こういう画像はPCで描かせるに限る。しかも直線しかないのだし、ActionScriptで描いちゃうのがヨサゲ。と思ったのだけど。何も考えずにスクリプトを書くと、MovieClipの非表示部分にまで線を描いてしまうので、気分的も、さらにおそらくは描画処理的にもよろしくない。やはり描画領域でクリッピングする必要があるかなと。
でも、どうやってやるのか忘れた。ASCIIから出てたCGの本に、やり方が書いてあった記憶はあるのだけど。その手の本は、全部捨ててしまったからなぁ…。検索しても、今時クリッピングは、ライブラリ側に任せてしまうのがほとんどのようで。自前でやってる事例にはなかなか遭遇せず。…こういう時に、ちゃんと数学を勉強してたのかが試されますな。
アレって言っても判んないわな…。こういう感じ。
FLASHアニメの素材として扱うだけなので、最初のうちは手で描こうと試みたり。昔は全部、エアブラシや筆で描いてたわけだし。 *1 しかし、作業しているうちに面倒臭くなってきた。こういう画像はPCで描かせるに限る。しかも直線しかないのだし、ActionScriptで描いちゃうのがヨサゲ。と思ったのだけど。何も考えずにスクリプトを書くと、MovieClipの非表示部分にまで線を描いてしまうので、気分的も、さらにおそらくは描画処理的にもよろしくない。やはり描画領域でクリッピングする必要があるかなと。
でも、どうやってやるのか忘れた。ASCIIから出てたCGの本に、やり方が書いてあった記憶はあるのだけど。その手の本は、全部捨ててしまったからなぁ…。検索しても、今時クリッピングは、ライブラリ側に任せてしまうのがほとんどのようで。自前でやってる事例にはなかなか遭遇せず。…こういう時に、ちゃんと数学を勉強してたのかが試されますな。
◎ 考えてみたらあらゆる状況を想定してクリッピングする必要はないな。 :
消失点から放射状に伸びる直線に関しては…
_こんな感じ になった。
- 画面の高さ以上は描画しなくていいわけだから、始点終点のy座標は変化しない。終点のx座標だけが変化する。
- 終点が x > 画面幅 / 2 のときだけクリッピングすればいい。
- クリッピングと言っても、x = 画面幅 / 2 のときの y座標を求めればいいだけ。
- 左側は、右側を水平反転して描けばいい。
- 始点終点のx座標は一定。(- 画面幅 / 2 , y) 〜 (+ 画面幅 / 2, y)。
- y座標は透視変換で求めればいい。
_こんな感じ になった。
◎ _ライン・ルーチン (2)線分のクリッピング :
あらゆる場面に対応できる線分のクリッピング処理についての記事。ありがたや。
_アルゴリズムの紹介 も勉強になるであります。…昔は、PC雑誌にこういった内容が当たり前のように載ってたことを思い出したりもして。
_アルゴリズムの紹介 も勉強になるであります。…昔は、PC雑誌にこういった内容が当たり前のように載ってたことを思い出したりもして。
*1: 溝のついた定規にガラス棒をあてて、とか、マスキングテープを張って、とかそんな感じ? >エアブラシや筆で作画。
この記事へのツッコミ
[ ツッコミを読む(2) | ツッコむ ]
以上です。
おお!すばらしいですね!!
プチ感動しました。
ありがとうございます。
…む。考えてみたら、コレ、スペースハリアーっぽいですね。