ちょっと変なコード

sq>s <- "aaa"; sq>print(s.len()); 3 sq>function f() { print(len()); } sq>f.call(s); 3 関数コンテクストには何でも入り得るということ。default delegateもハッシュテーブルの項目と同様の、単なる検索される要素として提供されているということ。

implicit delegation

関数コンテクストやGetの対象のSQObjectがテーブルであった場合、当然真っ先にこのハッシュテーブル内を検索するわけだが、ここで名前が見つからなかった場合にエラーとせず、あらかじめこのテーブルへ設定しておいた次の検索対象候補としての別のテーブルへ…

Get

Squirrelスクリプトの基本的で一貫したルールとして、exp_context.exp と書くことはexp_contextという名前のSQObject内に、"exp"という名前のつけられたSQObjectを探すことを指す。内部的にはこのような . 演算子はコンテクストとなるSQObjectの実際の型に関…

関数コンテクスト、thisについて

Squirrelでは関数実行には関数そのものと同時にコンテクストとなる変数(environmentとも呼ばれる)を指定する必要がある。この変数は関数内ではthisとしてアクセス可能なほか、関数内で出現する変数や関数などの名前はコンテクスト内を最優先に検索される。S…

fundamentalな部分についてまだ書くよ

前述のSQObject構造体はすべてのSquirrelが提供する型を格納できるようになっている。ハッシュテーブルや配列や文字列、プリミティブ型は当然のことながら、C++側で定義された関数の定義(native closureと呼ばれる)、squirrelで定義された関数の定義(closure…

メモリ管理とか

メモリ管理について。LuaがあくまでGCなのに対してSquirrelは基本的なメモリのライフタイムの管理にリファレンスカウンタを採用している。バリアント変数の実体のような、すべての型の共用体とその内容の型情報を保持するSQObject構造体があり、これを継承し…

squirrelについて書く前に2

アプリケーションのマクロや設定ファイルのパーサーにしか使わないというのなら話は別だが、ゲームのメインループに組み入れて頻繁に駆動させるのであれば、組み込み言語内で実際に何が行われているかを把握しておく必要がある。最適化やデバッグ等を考えた…

squirrelについて書く前に

luaとかsquirrelといった組み込み用言語はhost systemに組み込めてナンボ、それでいて高速に動いてナンボなので、マスターした言語コレクションの一つに加えたいとかそういう人はあっちいってくれ。一番の問題は本体と組み込み言語のどこでそれぞれを切り分…

はてなカスタマイズメモ

大抵のデザインはpreでドキュメントオブジェクトツリーの奥底で強引なサイズ変更が起きることを想定してつくられていない。我々pre愛好家にcenterレイアウトやwidth:autoが許されることはありえない。サイドバーを左に置くことも許されない。body、sideber、…

いきなりsquirrel

ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ色つく記法(シンタックス・ハイライトというものだそうで)ができるらしいのでテストでsquirrelのコードをjavaのハイライトでやらせてみよう。 キャラのモーション…

単純で一貫性のあるルールが一つだけの特別形で崩壊するよくある話

わざわざ武器を右手でも左手でも装備できるようにしてるのはきっと自分が左利きでどっちの手を使うのかということに変なこだわりがあるからではなかろうかと思う。さて、右手に持っている武器は右手に持っているように表示されており、右手の武器を使うボタ…

超高速ブラー

サンプラーのリニアフィルタを何度も使うことでピクセルシェーダにかかる負担を最小限に抑え、なおかつクォリティの高いブラーを実現した。 1. 元画像 (270x500) 2. 20%スケールダウンしたサイズのテクスチャへ (54x100) 3. 2を98%スケールダウンしたサイズ…

クラス設計な問題

クラス図を書くのが好きな人への課題。 俺のゲーム上で描画される一人のお人形(エンティティ)は複数のそれぞれ異なるライフタイム、共有レベルを持つパーツを組み合わせて作られる。 体のメッシュ・ボーン・ボーンアニメーションデータ → プール内に置かれ複…

服をきせて剣を持たせてあげました

(広角レンズというよりも)リアルレンズのシミュレーション

実際のカメラのレンズや目玉によってもたらされる視野は扇型を視線を軸に回転させた回転体なのだが、コンピュータ上では計算の簡略化のためか上下面が平らな錘台の形で扱われている。このため特に視野の端の方でリアルとのゆがみが大きくなり、違和感が生じ…

続・ゴミ箱

とりあえずこう直さざるを得なかった。2バイト文字がからんでなんとかするとパスの文字列のサイズが狂って最後尾の一文字が消える。だからkonfabulatorじゃなかったyahoo widget engineはダメだといったんだ。

フェイシャルコントローール

なんか文句あっか?あーん?みたいな こんな顔もできるよ 口の表情にメリハリがないねまゆげは笑う・怒る・困るの3つを用意して三次元ベクトルのようなパラメータを指定させて3種類のまゆげの頂点位置をブレンドしている。口は開ける・閉じると閉じてる状態…

ゴミ箱

自分はデスクトップにとりあえず作ったファイルとかブラウザでダウンロードしたファイルをおいておくたち(多分マイクロソフト的にはマイドキュメントでやってほしいのだろうが)で、常々いらなくなったファイルをそこからゴミ箱へドラッグするのでなくて画…

さいてきか

のことを同時に考えながらIKの真似事っぽい複雑怪奇な処理を書くのは絶対よくない。それこそIKのCCD法のようにとりあえず大まかに目的の方向へ向くようにしてから細かく最適な方向へともっていくようにするべきだ。注視点に首をむけるように仕向けたのだけど…

割といいかもしれない

逆方向に設定したハイライトがレンズの周囲に写りこんでくるのは

目のハイライトに環境マッピングしたらどんなにすばらしいことになるかと思ったが

ちょっとした角度のズレで瞳の中の星が動くわけだけど、それほどの違いはないな。だからみんな固定なんでしょうか。 … 黒目にかぶさってる透明な部分(なんていうの?)を目玉とは別に作成したり、外側へ向けて透過させたり、右と左で同じ像が写るように法線…

視線

目の動きは単に目標物の向きをそのフレームで計算して向けてるだけでは人間のやるロボットの演技のようになってしまう。 眼球 微妙な注視点の移動には反応しない 閾値を越えた時点で一気に動く ニ分の一くらいの確率で動いてる間まぶたを閉じる ただし首の動…

高速にラフな当たり判定を行うためのバウンディングシリンダー

クロスシミュレーションできちんと体との当たり判定を処理する場合、これを例えば当たり判定用簡易モデルなんかと交差判定するとなると大変なことになる。理由としてまず第一に簡易モデルを現在の体勢に頂点を変換するのに時間が掛かる。第二に処理が必要な…

美しいエラ?

3Dで人体をモデリングするのは二次元絵で自分の好きな解釈のアングルだけじゃなくて人間の体全体を通して結構厳密ないわゆるデッサン?肉体の把握というか、別に本物に近ければそれでいいってわけではないので、あらゆる部分における自分なりの理想的解釈が…

妙なポストエフェクトを発見したこと

本当にいじっている最中に発見しただけの場合にちっとも偉ぶれないというのは問題である。偉そうに振舞う術を知らない個人的な問題である。ところでそのポストエフェクトというのは隣接する色の明るさの差異を閾値を以ってぼかしをかけるかエッジを残すか同…

厚揚げをあぶったもの

単に食ったものの写真を貼るだけのカテゴリにしちゃおうかな? ショウガを大量におろし、ねぎはちゃんと水にさらしてあるし、結構手間かかってる。最高のつまみである。ちなみに酒は大五郎である。焼酎甲類をそのまま飲むバカである。なんかこれになれてしま…

おい

koei.co.jp scei.co.jp square-enix.co.jp みてるんだったら会社いれてよ!!!!!! 連絡先はこちらです kataho@m19.alpha-net.ne.jp やっぱりアホなネットワークトポロジーの研究よりもPixel Shaderとか物理シミュを頑張るのが今の流行?そりゃそうだろ…

京アニフィルタ最適化成功

完全に60fpsでます。思ったとおりだった。 1パス目 - 3.5分の1小さなテクスチャへ元絵をコピー + トーンカーブを調整 2パス目 - 小さなテクスチャ内で横方向にブラー サンプル点 7 3パス目 - 小さなテクスチャ内で縦方向にブラー サンプル点 7 4パス目 - 元…

勝手に命名京アニフィルタ ( Light Bloom )

京都アニメーションの作品で頻繁に使われるいわゆるLightBloom。画面全体に対するポストエフェクトでガウスブラーをかけた画像とかけてない画像を比べて明るい方の色を置くようにしています。京都アニメーションの方がどんなアルゴリズムのフィルタをかけて…