2016/03/16(水) [n年前の日記]
#1 [prog] Processingでテクスチャマッピングをしたポリゴンを描画するテスト
ひとまず Processing を使って実験してみようかと。まずはポリゴンにテクスチャを貼れるかどうか試してみないといかんな、と思ったけどその前に、3Dで描画するアレコレを調べないと。
環境は、Windows10 x64 + Processing 3.0.2。
_sketch_3d_test_box (Processing.jsで動作する版)
環境は、Windows10 x64 + Processing 3.0.2。
◎ 3D描画する際の基本的な書き方。 :
// 3D BOX draw test void setup() { size(400, 400, P3D); // P3Dをつけると3D描画ができる } void draw() { background(0); // 背景を黒に lights(); // ライト設定 // 全体を移動 translate(width / 2, height / 2); float mx = mouseX - width / 2; float my = mouseY - height / 2; // 全体を回転 rotateY(radians(mx)); rotateX(radians(-my)); // 箱を描画 box(150, 150, 150); }
- size() の3番目の引数に「P3D」をつけると、3D描画ができる
- translate() や rotateX()、rotateY()、rotateZ() で、全体の移動や回転ができる。
- lights() を呼ぶと、陰影をつけてレンダリングしてくれる。
◎ テクスチャマッピングをしたポリゴンを描画。 :
_sketch_texturepoly_draw (Processing,jsで動作する版)
しかし、右側のテクスチャは歪んでる。四角形1つを三角形2つで表現してますよーって時の歪みが出てるというか。
この手のテクスチャの歪みは2つあって。
ただ、前述の図の右側は、後者の事例。元の図形がそもそも矩形(長方形)じゃないので歪んでる。この歪みを簡単に解決する方法は見つからなかった。何かを指定すればサクッと解決しちゃうのかなと期待したけど、そういう機能は用意されてないらしい。
じゃあ、どうやって解決したらいいのか…。今のところ、ポリゴンを分割するしかないのかなと思っているところ。
例えば DXRuby の Window.draw_morph も、四角形1つを三角形2つで表現してるけど、標準では縦横2分割 ―― 1枚のポリゴンを4分割して誤魔化して(?)いるし。たしかそのはず。
プレステ1で3Dゲームを作ってた頃も、こういう状態が頻繁に起きていて。せめて、視点に近いポリゴンだけでも分割して、とかやってた記憶があるのだけど。ググっても、当時のやり方が出てこないんだよな…。
// テクスチャ付きポリゴンの描画テスト // 四角形が三角形ポリゴン2つで描画されてるのが分かる // Processing.js で画像ファイルを読み込みたい時は以下の指定が必要 /* @pjs preload="uvmap.png"; */ PImage img; void setup() { size(640, 480, P3D); img = loadImage("uvmap.png"); } void draw() { background(0); translate(width / 2, height / 2); beginShape(); // 図形描画開始 texture(img); // テクスチャを指定 // 各頂点の位置と、対応するテクスチャ座標を指定 vertex(-300, -100, 0, 0, 0); vertex(-100, -100, 0, img.width, 0); vertex(-100, 100, 0, img.width, img.height); vertex(-300, 100, 0, 0, img.height); endShape(); beginShape(); texture(img); vertex(0, -100, 0, 0, 0); vertex(300, -100, 0, img.width, 0); vertex(250, 100, 0, img.width, img.height); vertex(100, 100, 0, 0, img.height); endShape(); }
- Processing.js (JavaScript) を使ったスクリプトで、画像ファイルを読み込みたいときは、/* @pjs preload="uvmap.png"; */ といった指定が必要。コレをしないと loadImage() で画像ファイルを読み込んでくれない。ハマった。
- beginShape() で図形描画を開始。
- beginShape() には、beginShape(QUADS); 等も指定できるらしい。
- texture() で、マッピングするテクスチャを指定できる。
- vertex(x, y, z, u, v) で、頂点1つのx,y,z座標と、割り当てるテクスチャのu,v座標を指定。
- endShape() で図形描画終了。
しかし、右側のテクスチャは歪んでる。四角形1つを三角形2つで表現してますよーって時の歪みが出てるというか。
この手のテクスチャの歪みは2つあって。
- 元のポリゴンは長方形だけど、回転を加えたり透視変換した際に見た目が長方形じゃなくなって歪む場合。
- 元のポリゴンがそもそも長方形じゃないので歪む場合。
ただ、前述の図の右側は、後者の事例。元の図形がそもそも矩形(長方形)じゃないので歪んでる。この歪みを簡単に解決する方法は見つからなかった。何かを指定すればサクッと解決しちゃうのかなと期待したけど、そういう機能は用意されてないらしい。
じゃあ、どうやって解決したらいいのか…。今のところ、ポリゴンを分割するしかないのかなと思っているところ。
例えば DXRuby の Window.draw_morph も、四角形1つを三角形2つで表現してるけど、標準では縦横2分割 ―― 1枚のポリゴンを4分割して誤魔化して(?)いるし。たしかそのはず。
プレステ1で3Dゲームを作ってた頃も、こういう状態が頻繁に起きていて。せめて、視点に近いポリゴンだけでも分割して、とかやってた記憶があるのだけど。ググっても、当時のやり方が出てこないんだよな…。
*1: Processing も、昔の「P3D」モード = ソフトウェアレンダリングで処理してた頃は、ちゃんとやってくれなかったらしいのだけど。今の「P3D」はOpenGLを使ってるらしいので、そのあたりをちゃんとやってくれるようになったのだろうと想像。
[ ツッコむ ]
#2 [neta] 無言の二人
夢の中でなんだか気になるやり取りを見たのでメモ。夢日記。
学生時代のサークル(漫研)の同窓会。女性先輩が「○○(女性)と○○(男性主人公)って、あの頃実は付き合ってたとかないよね」と質問。問われた二人は全力で否定。
どうしてそんなことを思ったのかと尋ねてみると、当時二人の書いてた文章内の記号の書き方がそっくりで、なんだかこの二人は怪しいと思った、という話で。それは…。当時二人が、とある漫画家さんのファンだったので、その漫画家さんの真似をしてその記号を書いてただけというオチで。
そもそも当時、付き合う以前の状態で…。サークル部室内で二人だけになっても、お互い一言も喋らず(「おはようございます」「お先に失礼します」ぐらいは言ってたかな…?)、原稿用紙やアイデアノートに向かって、ひたすらカリカリとペン先を動かし続ける、そんな光景で。
「ずっと無音でソレやってたの?」
「作業用のBGMは流れてましたよ。部室にカセットデッキがあったじゃないですか」
「ああ、ゴミ捨て場から拾ってきたやつ」
「違う! アレは○○先輩の寄贈品」
「アレって寄贈品だったの? スゲー汚いからてっきり」
「持ってきたときは壊れてたけど、○○先輩がバラシて直してくれたんですよね」
「直したって言っても、ローラー回すゴム取り替えただけだよ。でも1回じゃ直らなくて何回か取り替えたと思った」
「時々回転数おかしくなってたのはそのせいかあ」
先輩達が、授業の時間が来るまで部室で暇つぶししてて。カセットテープかけたまま授業に行っちゃうんですよね。部室に残った二人の間に流れているのは、BGMだけ…。
「いいねえ。ムードあるじゃない」
「でも流れてたのアニソンですよ」
「ダメじゃん!」
「しかもMAD流れてたよね」
「最悪だあ!」
「ムードもへったくれもねえ…」
「しかし全然喋ってないって逆に凄いね」
「あの頃、二人とも、サークルの中で一番漫画道を邁進してたよなあ」
「でも、いくらなんでも世間話ぐらいはしてたでしょ」
世間話ねえ…。どうだったかな…。会話らしい会話をした記憶が…。
「あ。ホラ、アレ」
? …ああ! ハイハイハイ。アレかー! たしかアレは
てなところで目が覚めた。
続きが気になる。一体どんなエピソードがあるんだ。二人だけで通じ合ってないで、おじさんにもちょっと話を聞かせなさい。
ちなみに、自分も学生時代に漫研所属だったのですけど、女性のサークルメンバーなんて居ませんでした。工業大学だったので。99%男子校状態だったので。
そんな悲しみに満ち溢れたオチは横に置いといて。「たしかアレは」の続きが気になる。どうせたわいのない話だろうけど、ずっと無言のままペン先を動かしてた二人の間に、何があったのだろう…。
学生時代のサークル(漫研)の同窓会。女性先輩が「○○(女性)と○○(男性主人公)って、あの頃実は付き合ってたとかないよね」と質問。問われた二人は全力で否定。
どうしてそんなことを思ったのかと尋ねてみると、当時二人の書いてた文章内の記号の書き方がそっくりで、なんだかこの二人は怪しいと思った、という話で。それは…。当時二人が、とある漫画家さんのファンだったので、その漫画家さんの真似をしてその記号を書いてただけというオチで。
そもそも当時、付き合う以前の状態で…。サークル部室内で二人だけになっても、お互い一言も喋らず(「おはようございます」「お先に失礼します」ぐらいは言ってたかな…?)、原稿用紙やアイデアノートに向かって、ひたすらカリカリとペン先を動かし続ける、そんな光景で。
「ずっと無音でソレやってたの?」
「作業用のBGMは流れてましたよ。部室にカセットデッキがあったじゃないですか」
「ああ、ゴミ捨て場から拾ってきたやつ」
「違う! アレは○○先輩の寄贈品」
「アレって寄贈品だったの? スゲー汚いからてっきり」
「持ってきたときは壊れてたけど、○○先輩がバラシて直してくれたんですよね」
「直したって言っても、ローラー回すゴム取り替えただけだよ。でも1回じゃ直らなくて何回か取り替えたと思った」
「時々回転数おかしくなってたのはそのせいかあ」
先輩達が、授業の時間が来るまで部室で暇つぶししてて。カセットテープかけたまま授業に行っちゃうんですよね。部室に残った二人の間に流れているのは、BGMだけ…。
「いいねえ。ムードあるじゃない」
「でも流れてたのアニソンですよ」
「ダメじゃん!」
「しかもMAD流れてたよね」
「最悪だあ!」
「ムードもへったくれもねえ…」
「しかし全然喋ってないって逆に凄いね」
「あの頃、二人とも、サークルの中で一番漫画道を邁進してたよなあ」
「でも、いくらなんでも世間話ぐらいはしてたでしょ」
世間話ねえ…。どうだったかな…。会話らしい会話をした記憶が…。
「あ。ホラ、アレ」
? …ああ! ハイハイハイ。アレかー! たしかアレは
てなところで目が覚めた。
続きが気になる。一体どんなエピソードがあるんだ。二人だけで通じ合ってないで、おじさんにもちょっと話を聞かせなさい。
ちなみに、自分も学生時代に漫研所属だったのですけど、女性のサークルメンバーなんて居ませんでした。工業大学だったので。99%男子校状態だったので。
そんな悲しみに満ち溢れたオチは横に置いといて。「たしかアレは」の続きが気になる。どうせたわいのない話だろうけど、ずっと無言のままペン先を動かしてた二人の間に、何があったのだろう…。
[ ツッコむ ]
#3 [nitijyou] 自転車で買い物に
ヨークベニマルとサンドラッグで夜食その他を購入。ホワイトデー用の何かを買おうと思ったら当たり前だけど売り場はもう無くなってて、仕方ないからお土産売り場で「酪王カフェオレサブレ」なるものを購入。夕食時に家族で味見してみたけど、比較的評判は良かった、ような気がする。
[ ツッコむ ]
以上、1 日分です。