JavaScript+XAMLで3Dに挑戦 (Silverlight)

2010年10月 3日 (日)

silverlight+Jscript:でテクスチャをはれるかどうか−2

せっかくなので実用化までいきたいところです。
xamlへの書き込み時間はなんだか文字数勝負だったりするので,
ProjectionMatrixに書き込む分量は極力減らしたい。(・・;
少数をざっぱり切り捨てる訳にもいかず、かといって
Math.floor(hogehoge*1000)*0.001とかやると2進数のアラが出るのか
...0000001とかなってしまうので、
Math.floor(hogehoge*1000)としておいて、M44もついでに×1000で解決です^^

あらたにソーティングしない分、テクスチャは書き換え時間勝負かな
ピカリ君
1t_0

テクスチャを貼りやすくするために、前後関係の細かさを犠牲にして
一部同一面を合体させました。線も消え、面の数も減ってめでたしめでたし。

1t_02_2

また宣伝ARMORED ODANGO2

2010年10月 1日 (金)

silverlight+Jscript:でMatrix3DProjectionは利用可能だった。

やっとこテクスチャを貼ることができました。
Matrix3Dに突っ込むのは、Z要素を残さずにスクリーン投影までした行列
にすれば良かっただけという。確かにw(ーvー;


スクリーン投影(射影変換+スクリーン変換)の行列は、仕様にも依りますが
こんな感じにすれば、(scrn_zは実際の大きさの画面までの距離。)
A_00map_2

M43が効いて最後が -zになり、全体が-zで割られるので(z<0)
|scrn_z / z|倍のピンホール変換が実現されます。
Cocolog_oekaki_2010_10_01_21_00


行と列の仕様が逆だったので転置するついでに、第3行と第3列はM33=1、それ以外は
0にしておかないと絵がちぎれるようです。
A_0000
ぴったりはまりましたね^^;

ここまで来ればぺたぺた貼り放題か
A_1875


2010年9月27日 (月)

silverlight+Jscript:でMatrix3DProjectionは利用可能か

Matrix3Dなる4×4行列を利用すれば Fillに指定した画像も勝手に傾いてくれるはず。

せっかくなので、各ポリゴンたちに変換行列を用意しておく方式に転換しようと、
javascriptでこんな「_matrix.txt」関数を用意してやってみたのですが、
いざ Matrix3DProjectionの ProjectionMatrixに用意した行列(仕様により行と列が逆)を
指定してみると、絵に奥行きが出るどころかちぎれてしまった(ー ー;

いろいろ試してみたところ、どうもz関係の要素がうまく反映されてないようです。
サポートされてないのかな。
本来壁にはまるはずの・・・。
その他のポリゴンも同じ行列を Projection指定ではなくベクトルにかけて
表示したモノなのに。
Mat00

しょうがなくまたPlaneProjectionに戻って試行錯誤したのですが、
こちらはこちらで結構ややこしいです。以下Polygonでやったときの話。

 ややこしいのは CenterOfRotationXとYの"0"がPolygon座標の端ではなく
原点(Canvasに入れていればCanvas.LeftとTop)。そのくせ幅はポリゴンの幅です。

Cocolog_oekaki_2010_09_27_23_44
かといって真ん中で回すときに CenterOfRotationXを 0.5以外にすると、正面から見た角度とは
違う見え方になってしまうので、CenterOfRotationXが 0.5になるような Polygon座標にして
Canvas.Left等のオフセットで目標の位置に合わせないといけないようです。

ちなみに Canvas.Leftに関しては、
object.Canvas.Left = value;   ではなく
object["Canvas.Left"] = value; なんだとか。

そして設定してみましたがぴったりはまるというわけでもない・・・(ーvー)
Mat01

Matrix3DProjection・・・助けておくれ。

2010年9月25日 (土)

silverlight+Jscript:でテクスチャをはれるかどうか

壁に絵をぺたぺた貼ってみようとしました。
とりあえずPolygonの三角形どものFillに指定したところ、もちろん向きは変わらず。

光のあたり具合は絵の上から半透明の壁を重ねて表現するとそれなりに。
Armt0

三角形の場合タテ幅とヨコ幅を取って拡大してるみたいです。(グラデーションに同じ)
ナナメを向くと分離します。
Armt1

silverlight2.0からPlaneProjectionなる遠近法を用いた描画ができるそうです。
これでRotationXとYとZでうれしい回転ができるんですね。どうしよう。

カメラに対して位置、大きさ、向きの方式を用意しなければ。
ちょっとしんどそうですね。そして壁から分離。
Armt2
宣伝
ARMORED ODANGO2

2010年9月21日 (火)

HTML Silverlight用のレイヤーとの前後関係

CGIゲームもやっと遊べる状態になったと思いきや、Windows環境でやってみると
silverlight用のレイヤーが一番上に来て何も見えない状況でした。

zIndexやaboveやその他諸々試してもどうも変わらないので調べてみると、
isWindowlessを"true"にすれば良いということだったので、何とか解決しましたね(ーvー;)
詳しくはmsdnに書いてあります。Windowlessなんちゃら

このCGIゲームに関して、なかなか苦労させられたのがPerlでの16進数と2進数のやりとりだったり。
フォーマットに気をつけてやらないと0が大変なところに入ってきてそれこそ大変でした。

ともかく説明書を熟読してあそんでやって下さい。アーマードお団子?(お団子は出てきません)
Google Chromeでは残念ながら遊べません。なぜかXMLへのアクセスが究極に遅い。
XMLへのアクセスが究極に遅い。計算時間はとてつもなく速いんですけどねえ。
Safariが無難。

パーツ交換とか楽しいです。未完。

Armed_form_swich

2010年9月16日 (木)

perlとjavascriptとxamlと

 ぽつぽつと作業を進めています。やらねばならないことが後に回るのはよくあることでしょうか。
何とか読み込んで戦って保存しての基礎が組み上がった気がします。
最初から組み上がっていた気もします。

パーツ交換とかしたいですね。
申し訳程度の腕と4足。こういうゲームになるんです。
Armed_11


ブーストは手を抜いたらこんなのになりました。
全体のクオリティーにはマッチしてるのかも。
Armed_12

雨が降ればまた外出に支障をきたすのでしょう。