アーカイブ

2007 年 12 月 のアーカイブ

[ASde3D #8] グーローシェーディング、他

グーローシェーディングが出来たので、エントリー。

デモはこちら

といっても、三点の頂点色をグラデーションで線形補間するやり方がまったく思いつかなかったので、psyark.jp さんのこのエントリーを参考にさせていただきました。というかそのまま使ってます。こんなの良く思いつくなぁ、尊敬。

ちなみにここ一週間くらい、ライブラリちっくに一連の 3D 用クラスをまとめてて、

var scene:Scene3D = new Scene3D(600, 300);
addChild(scene);
scene.addChild3D(new Torus(10, 60, 8, 16));
scene.addChild3D(new Torus(20, 20));

上のやつなんかはこんな感じのコード 4 行で動いてます。ただ、カメラの機能だったり、ライトの位置変更だったり、絶対に欠かせない機能が実装できてないのでダメダメですが。形になるのはいつになるやら。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #7] グーローシェーディング、失敗作編

普段使わないものは、人間忘れていくもので、beginGradientFill の存在をすっかり忘れていました。これを使えばベクターデータでのグーローシェーディングも実現できるのではと、色々試しています。それの失敗作が面白かったのでエントリー。

デモはこちら

キラキラ光ってます。こんなことする予定ではなかったんだけどなぁ。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #6] テクスチャマッピング

今回はグーローシェーディング + テクスチャマッピング。同時に適用するとさすがに激重。それでも出来ることは出来ましたので、公開しておきます。

デモはこちら

そういえば Papervision3D 2.0 が出てたので、中身を見てみました。グーローシェーディングほかフォンシェーディングまで新たにサポートされてるみたいです。ただ、テクスチャとの同時適用は多分出来なさげです。実際に試したわけではないので確実では無いですが・・・。実用的な方法での実現が出来ればいいんですが。

1/27 追記:
ShadedMaterial で実現できるようです。今日も迷子さんで詳しく解説されていますので、そちらをご参照ください。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #5] グーローシェーディング

ようやく移植できましたよ、滑らかな曲線が気持ち良いグーローシェーディング。何とか動いてます。これで、ピクセル毎ドット描いてたら、重過ぎてたまらないところ。今でも十分に重いですが、ByteArray 方式に切り替えたおかげで大分マシかな。

デモはこちら

でも、やっぱり実用的ではないですね。こんなの仕事で使ったら重すぎて苦情がきそう。Flash Player の処理速度が馬鹿みたいに上がればいいけど、まだまだ時間は掛かりそう。実用的にしようと思ったら、やっぱりシェーディングは省かないといけないんですね。やるとしても、フラットシェーディングまでかな、PaperVision3D みたいに。まぁ、ほぼ実験みたいなものなので、このまま次はテクスチャマッピングに進みます。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #4] フラットシェーディング、ビットマップ編

前回はベクターでの実装。でも、これだとグーローシェーディングが絶対無理なので、なんとかビットマップで実装できないものか「ウンウン」うなされながら考えてみました。

最初に考えたのが setPixel() での無理やり実装。かなり重いので要注意。

setPixel() での無理やり実装

出来るのは出来るけど、重すぎる。しかも、描画エリアを制限してもこの程度。これだと無理があるので、ByteArray を使っての実装を考えてみました。

ByteArray を使っての実装

違いがお分かりいただけるでしょうか?無い頭を振り絞って考えたので、かなり満足の行く結果。これなら一度は諦めかけたグーローシェーディングに挑戦できます。ということで、次はグーローシェーディングに挑戦。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #3] フラットシェーディング

今回はいよいよボリゴンの描画。オリジナルは全ピクセルを走査してるけど、AS には MemoryImageSource() なんて便利そうなクラスは無いし、Graphics を使って描画してます。

デモはこちら

一応できた。ワイヤーフレームとかにもできますが、線描いてるだけなので重いです。

ただ、これでは次のグーローシェーディングが実装できないんだよなぁ。setPixel() を使ってやるにはコストが高すぎるし、どうしよう。ByteArray と setPixels() 辺りを使ってうまくできないものか。でも ByteArray は扱ったことないし糞詰まり。これで終わりかも。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #2] 行列による座標変換、ビットマップ編

前回の行列による座標変換の続き。中身をビットマップでの描画に変えてみました。

デモはこちら

前回のと比べて、分割数を上げていってもらうと差は歴然。ビットマップの方が確実にスペックが良いです。今更ながらビットマップの凄さを実感。次は、フラットシェーディング。

カテゴリー: Flash (ActionScript) タグ:

[ASde3D #1] 行列による座標変換

JAVAde3D」というサイト、ご存知ですか?ROXIK の城戸さんの講演を聴いて以来、密かに持っている 3D 熱。この間、「ActionScript 3.0 アニメーション」を読了して基本の考え方が分かったので、次にチャレンジしてみようと見つけたのが上記のサイト。目からウロコなわけですが、時間あるときに移植することにしました。そんな「ASde3D」第一弾。

デモはこちら

いやいや、めっちゃ面白い。これは本気で 3D をやってみたくなります。やっぱり実際にやってみるのが、一番勉強になりますね。マトリクスやらベクトルやら、外積やら内積やら。数?も途中までしかやったことない自分にとって未体験&理解不能だったわけですが、実際に使っていくと「こういうときに使うのか」と。式の意味とかは分かんなくても、使えれば OK。どこまで出来るか分かりませんが、飽きないよう無理せず続けていこうと思います。

カテゴリー: Flash (ActionScript) タグ:

はじめまして。

ブログのテンプレート適用中に余計なことをしたため、またデータが消えてしまいました。はじめましてのつもりで再開したいと思います。今までの内容は、改めてエントリーするかもしれないし、しないかもしれません。よろしくお願いします。

カテゴリー: Other タグ: