Blender2.62でnumpyを使う。

自分用メモ
32bitWindows/Blender2.62(2.5以降ならたぶん一緒)向け

  1. Download Pythonから"Python 3.2.2 Windows x86 MSI Installer"をDL
  2. Python3.2.2をインストール
  3. Numerical Python - Browse /NumPy/1.6.1 at SourceForge.netから"numpy-1.6.1-win32-superpack-python3.2.exe"をDL
  4. Numpyをインストール
  5. C:\Python32\Lib\site-packages\numpyをフォルダごとBlenderをインストールしたフォルダ以下\2.62\scripts\modules内にコピー
  6. BlenderPythonコンソールからimport numpyしてみてエラーが出なかったらおっけー☆

BrainfuckでFizzBuzzだよー

変態FizzBuzz祭りの一環として。

なんでそんな事やってんの?馬鹿なの?

事の起こりはこのへん。
セミコロンを使わずにFizzBuzzが書きたーい!!(某Eテレ風に) - うなてっくろぐ
この記事にじみーに自分がいるけど、セミコロンなしでFizzBuzzを書いたコードは実に平凡かつ面白みもなくだいたい他人の考えた方法を組み合わせただけ。
流石に恥ずかしいので言語そのものが変態なBrainf*ckさんに頑張ってもらうことにした次第。

コード

つべこべ言わずにコード見せろやってことで

//文字準備
>++++++++[->++++++++<]>[-<+<+>>]<<++>++++++>//BF
>>+++++++++++[->+++++++++++<]>[-<+<+<+>>>]<<<
---------------->---->+>++++++++++//iuz\n
 
>>>
 
+++[->>>[->++<]>[-<+++++>]<<,<++++++[->--------<]>[->+<]<<]>>>//数値入力
[->+>+<<]>
 
//主処理
<+++<+++++>>
[-<
        -[-<<+>>]<<<+>[#!0<->[->>+<<]]<[#0-<<+>>>>>+++<<<
#Fizz#
<<<<<<<.>.>>..>>>>
        ]>>//3
        -[-<+>]<<<+>>[#!0<<->>[->+<]]<<[#0-<+>>>>+++++<<<
#Buzz#
<<<<<<<.>>>.>..>>>
        ]<//5
        >+<[[-]>-<]>[-
#Num#
>>>>>
//入力値−現在の値を出す
>[->>+<<]>>[-<+<+>>]<<<[->>>+<<<]>>>[-<-<<+>>>]<
//数値出力(上位0出力なし、後片付け)
>>>>>>>+<<
-[+<<<++++++++++<<
[->>-[->>+<<]>+>[<->[-<<+>>]]<
        [-<++++++++++<+>>]<<<
]++++++++++>>[-<<->>]
>>>>-]<
++++++[-<++++++++>]>+>>>-[+
<<<<<<<<[>+<[->>+<<]]>[[-<+>]>[-<+>]>[-<+<+>>]<<.[-]]>>[[-<+>]<<[-<+>]>>]>>>>-]
<<<<<[-]<<[-]
<<<<<<<
        ]
#改行
<<.>>
 
>>>>>]

とまぁこんな感じ。


ideoneにBrainf*ckの実行環境があったのでそこで動かしてみると
こんな感じ


…えーっと…
ちゃんとFizzBuzzできてるでしょ!!すごいでしょ!!!褒めて!!
これに2日かけたんだよ!大変だったんだよ!!!
数値の出力も、上位桁に0が残ってたのを最後の最後で


とか言われちゃったからおじちゃん頑張っちゃったよ!!
すごいでしょ!おわり!!それだけ!!!


いろいろ

  • Brainf*ckでFizzBuzz、ちょっと検索してみただけでも先駆者が日本人だけで少なくとも4人いた。なんか変態目指したのに実はよくある性癖だったみたいなオチ
  • 出力の上位桁の0の処理はしたけど、入力は0埋めして3桁で入れなきゃいけない。その気になったら改良する。
  • ideoneの実行環境は1メモリが符号付きintらしい。このせいで数十分悩まされることになった。
  • Bf本格的に(?)触ったのは今回が初めてだったけど、かなーーーりアタマの体操になる。老人にやらせようそうしよう。

Blender Clothを他オブジェクトにひっつけて揺らす


上の写真のようなことをBlenderでやろうとしたら地味に詰まったのでメモ

まぁ分かってしまえば実に単純だった。

Cloth側

ClothSimulationを追加して

上のように

  • WeightPaintなんかでVertexGroupを作る
  • そのVertexGruopをPinningに設定する

ひっつけるオブジェクト側

  • ClothのParentに設定
  • 適当にアニメーションさせるようにキーを打つ

これだけだった。
おわり。



あいかわらず、興味がとっ散らかってるなぁ(´・◞◟・)

ソースコードのハイライト

↑の書くときに調べたら
ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ
ほえーこんなのあるのね。
C#なら

>|cs|
ほにゃららー
||< 

でいいんじゃないかな。たぶん。

(この文章ミスってサクっと元書いてあったやつ消してしまったのでとってもてきとー)

SlimDX.Direct3D10でスワップチェーンのバッファのリサイズでハマったとこ

SlimDXっていう.net用のDirectXラッパーがあるのよ。
基本はそのままラップしてるだけなのでC++のコードを参考に手探りでもなんとかなるけど、ちょっと(時間的にはだいぶ)あれしてしまった感じの話。

DirectXの描画先になってるウィンドウのサイズが変わったときはバッファのサイズも変えたほうがいいみたいなんだけどそのコードを書こうとしたとき。
ホイール欲しい ハンドル欲しい » Direct3D 10 ウィンドウのリサイズ (ResizeBuffers)
こちらを参考に

    renderTargetView.Dispose();
    SwapChainDescription desc = swapChain.Description;
    swapChain.ResizeBuffers(desc.BufferCount, size.Width, size.Height, desc.ModeDescription.Format, desc.Flags);
    renderTargetView = new RenderTargetView(d3d10Device, Resource.FromSwapChain<Texture2D>(swapChain, 0));

こんなコードを書いていた。
が、肝心のResizeBuffersで例外がでてしまう。。。
で、いろいろ試行錯誤した結果、見た目動いてるっぽいのが↓これ。

    renderTargetView.Resource.Dispose();
    renderTargetView.Dispose();
    SwapChainDescription desc = swapChain.Description;
    swapChain.ResizeBuffers(desc.BufferCount, size.Width, size.Height, desc.ModeDescription.Format, desc.Flags);
    renderTargetView = new RenderTargetView(d3d10Device, Resource.FromSwapChain<Texture2D>(swapChain, 0));

何が変わった?って感じだけど

renderTargetView.Resource.Dispose();

これが増えた。


そんだけ?


そんだけ。




時間かけて俺は何やってたんだか(´・◞◟・)