ぬの部屋(仮)
nu-no-he-ya
  • 1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
         12
    3456789
    10111213141516
    17181920212223
    2425262728  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
       1234
    567891011
    12131415161718
    19202122232425
    26272829   
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728     
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28      
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
    1234567
    891011121314
    15161718192021
    22232425262728
           
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
         12
    3456789
    10111213141516
    17181920212223
    242526272829 
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
        123
    45678910
    11121314151617
    18192021222324
    25262728   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    15161718192021
    293031    
           
         12
    3456789
    10111213141516
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30      
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    2627282930  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728     
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
        123
    45678910
    11121314151617
    18192021222324
    252627282930 
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
     123456
    78910111213
    14151617181920
    21222324252627
    282930    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    31      
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
      12345
    6789101112
    13141516171819
    20212223242526
    27282930   
           
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031     
          1
    2345678
    9101112131415
    16171819202122
    232425262728 
           
       1234
    567891011
    12131415161718
    19202122232425
    262728293031 
           
    1234567
    891011121314
    15161718192021
    22232425262728
    293031    
           
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
           
      12345
    6789101112
    13141516171819
    20212223242526
    2728293031  
           
    1234567
    891011121314
    15161718192021
    22232425262728
    2930     
           
        123
    45678910
    11121314151617
    18192021222324
    25262728293031
           
  • BlenderでDNAを作るチュートリアルを試す

    https://www.youtube.com/watch?v=fGLSnsv4dg0

    Blender Modelling Tutorial-DNA Helix

    6:43のシンプルなチュートリアルですがDNAは需要多いのではないかと思います。

    梯子状のオブジェクトを作る

    両脇の柱を作る[0:35~ ]

    • [Num 7]を押してXYビューに切り替える。その後[Tab]キーでキューブのEditモードに入り、[S]+[Y]でY方向にキューブを拡大する。
    • 続いて、[W]→Subdivideを二回行う。
    • カメラを右に寄せ、キューブを全選択したまま[Shift+D]を押し、[G]+[X]でキューブを複製する。

    H字の形状にする[1:20~ ]

    • 柱の一本を選択し、[Shift+D]で複製する
    • 複製後、[R]+[Z]でZ方向に90度回転する
    • 回転した柱をできる限り両脇の二本の中央に移動する
    • さらに中央の棒をZ方向に縮める

    複製と梯子の完成

    Addモディファイアを追加し、

    • Countを29など大きい数字に設定
    • Relative Offsetを(0,1,0)に設定
    • Applyして実体化

    Editモードへ行き、[A]で全選択。Remove Doubles で重複点を削除する

    さらにObjectモードでX軸で90度回転する。最後に、適当な大きさに縮小しておく。

    Editモードへ行き、一番下の段の、中央の点を選択し、[Shift+S]→Cursor to Selected で3Dカーソルを移動する。

    ねじる

    先ほど指定した3Dカーソルの位置で、[Shift+A]→[Empty]→Plain Axisを追加

    SimpleDeformモディファイアを追加し、Twistを選択、Axis,Originに追加したEmptyを設定、Angleに360を設定する。(動画ではFactorを10に設定している)

    最後に、Editモードへ行き、[S]+[X]でX方向に伸ばす。

    Emptyを動かすことでアニメーションが可能

    Arrayで伸ばす


    Rock Pile (石の破片の山)を作るチュートリアルを試す(2)

    https://www.youtube.com/watch?v=EGH0-Z5tK08
    How to make a Rock Pile in Blender 2.73! ( Easy )

    砕ける範囲を変更[6:45~ ]

    [Rigid Body]→[Rigid Body Collisions]→Collision Margin→Margin の値を変更して、爆発の範囲を調整出来る。

    margin off

    margin = 0.1

    爆発を大きくすると、大部分の破片が落下し、表示範囲の外に出てしまうが、レンダリング時にはそれらも計算されてしまい無駄になる。

    • 破片が選択されているならそのまま、選択されていないなら[Ctrl + I]等で選択
    • [Num 5] で平行投影に切り替え → [Num 1]で正面からのビューを表示
    • [B]キーで矩形選択を開始し、マウスの中央ボタンドラッグで矩形範囲内の選択を解除
    • [X]キーで選択中の破片を削除

    により、余計な破片を一括で削除出来る。

    Rock Pile (石の破片の山)を作るチュートリアルを試す(1)

    Rock Pile (石の破片の山)を作るチュートリアルを試す(2)


    Rock Pile (石の破片の山)を作るチュートリアルを試す(1)

    https://www.youtube.com/watch?v=EGH0-Z5tK08
    How to make a Rock Pile in Blender 2.73! ( Easy )

    1.オブジェクトの配置 [0:50~ ]

    [Shift+A]で Plane 及びIco shpereを配置。Planeは拡大する。
    Ico shpereは大きさを維持し、位置を(0,0,1)に移動する。

    Cell Fractureの追加・実行

    Cell Fractureアドオンの有効化

    [Ctrl+Alt+U]でUser Preferenceを表示し、"Cell Fracture"を検索、有効化する。

    Cell Fractureの適用

    Ico Sphereのオブジェクトを選択した状態で、ToolsのCell Fractureボタンを押す。

    Cell fracture selected mesh objectsを次のように設定

    処理が終わると、隣のレイヤーに結果のオブジェクトが生成されている。

    物理シミュレーションを追加[04:00~ ]

    砕かれた破片が全て選択状態のままで、
    [Physics]→Add Active をクリックする。

    [Physics]→[Rigid Body]でRigidを追加。続いて

    • [Rigid Body Collisions] → Friction: 0.6
    • [Rigid Body Collisions] → Bounciness:0.1

    この設定を、Copy from Activeですべての破片へ適用する。

    最初のレイヤーへ行き、Planeを選択。Rigid Body→Type:Passiveに設定。その後[M]でPlaneを隣のレイヤーへ移す。

    [Ctrl+I]で選択状態を PlaneからIco Sphereの破片へ変更する。

    Ico Sphereの破片がすべて選択されていることを確認し、[Pivot Point]の種類を"Indivisual Origins"に変更し、[S]でサイズを僅かに縮小する。

    ここまでの結果

    Rock Pile (石の破片の山)を作るチュートリアルを試す(1)

    Rock Pile (石の破片の山)を作るチュートリアルを試す(2)


    Blenderで鎖のチュートリアルを試す(3)

    シミュレーションの速度調整[08:40~ ]

    シミュレーションの速度が遅すぎるのはスケールの問題との事。しかしモデルの方を縮小するとBlenderがフリーズする可能性が高くなる。この動画では、スピードの変更でより自然な速度に近づけるという手段をとっている。

    speedの数字を上げることで、アニメーションが高速になる。

    シミュレーションのベイク

    他のソフトウェアへエクスポートする手段として、ベイクしてキーフレームに変換する。

    物理シミュレーションしている全てのオブジェクトを選択し、Bake To Keyframesをクリックする。

    ベイクするフレームの範囲を指定するダイアログが出てくるので、OKをクリックする。

    おまけ

    全て選択せずにベイクするとこうなる

    Blenderで鎖のチュートリアルを試す(2)

    1.質量の調整

    質量の調整は、設定したいオブジェクトを選択した状態で
    [Physics]→[Rigid Body]→Mass から設定する。

    初期状態で、球体のMassを30に設定すると、鎖がちぎれる。

    この場合、全ての鎖のMassをある程度上げる。選択したオブジェクトの全てのMassを上げる場合、まずアクティブなオブジェクト(Originがオレンジ色)のMassを上げ、その後Copy from Activeを押して、他のOriginが赤い選択中のオブジェクトへ適用する。

    2.壊される側のブロック(Cube)を追加

    1.Cubeを追加 [06:22~ ]

    [Shift+A]→[Mesh]→Cube でCubeを追加

    2.Arrayで複製・適用

    CubeにArrayモディファイアを三つ追加する。上から、
    Count : 8 , Relative Offset = (1.032 , 0 , 0)
    Count : 8 , Relative Offset =( 0, 1.02, 0 )
    Count : 5 , Relative Offset = ( 0 , 0 , 1.02 )

    と設定し、全てApplyする。

    3.Apply後のCubeを別オブジェクトに分割、Origin再設定[07:30~ ]

    ArrayをApplyした後のCubeは全て一つのオブジェクトになっているので、個別のメッシュに分割する。

    1.Editモードへ行き、全て選択

    2. [P] → By loose parts

    このままでは、オブジェクトのOriginが全て一カ所に集まっている。Blenderの物理シミュレーションはOriginの位置を重心として扱うため、各キューブのOriginを各キューブの中心へ移動しなければ上手く動かない。

    [Ctrl + Alt + Shift + C] → Origin to Geometry を適用する

    4.Cubeにシミュレーションを追加

    Cube一つを選択状態にし、[Physics]→[Rigid Body]を有効にし、Massを0.1に設定する。


    今設定した(青くなっている)Cubeを含め、他のCubeも全て選択し、Copy from Activeで全てのCubeに設定をコピーする

    Blenderで鎖のチュートリアルを試す(1)

    Blender Tutorial - Quick Rigid Body Fun

    1.鎖を作る [0:11~ ]

    1.トーラスを作成

    [Shift+A]→[Mesh]→[Torus]

    2.トーラスから鎖の形にする

    [Num+7]で上面からの図に切り替え、Editモードへ移行し、Torusを楕円にする。その後[Shift+D]で複製し、[R+Y]で90度回転する。

    ① Torusを伸ばす

    ② Torusを鎖にする
    ③鎖を増やす

    なお、動画で使っているのは[Shift+R]というリピート機能。ただしこの機能を使う場合、[Shift+D]をした後[ESC]すると[ESC]が最後の作業と見なされてしまうので、[Shift+D→ドラッグ]でなければならない。

    https://maku77.github.io/blender/ui/repeat.html

    2. 鎖に物理シミュレーションを追加[0:50~ ]

    鎖の一つを選択し、

    [Physics]→[Rigid Body]→
    [Rigid Body Collisions]→[Shape]

    を"Mesh"に設定

    Rigid Bodyを設定した鎖をアクティブにし、その他の鎖を選択する。

    [Physics]→Copy from Active

    で最初の鎖の設定を全てに反映

    3.地面を追加 [1:53~ ]

    落下したときに落ちる地面を追加する。

    [Physics]→[Rigid Body]→[Rigid Body]→[Type]→Passive

    4.ここまでの結果 [ 02:05~ ]

    5. 鎖の調整[03:00~ ]

    1.鎖を一つだけ固定する

    [Physics]→[Rigid Body]→ Dynamicのチェックを外す

    2. 鎖に球を追加

    3.重心を変更

    オブジェクトのOrigin(オレンジ色の点)がシミュレーション時にオブジェクトの重心として計算されるため、Originをオブジェクトの中心にしておく。鎖を全て選択し、

    [Ctrl + Alt + Shift + C]→ Origin to Geometry を選択

    4.傾けてシミュレーション

    1.固定されている鎖(一番上)を選択

    2.[Shift+S]→Cursor to Selected

    3.[3D Cursor]を選択

    4.全ての鎖を選択

    5.[R]で回転

    5.ここまでのアニメーション

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryのBall Pivotingを使用してみます

    まずヘッダファイルを読み込みます

    #include <vcg/complex/algorithms/create/ball_pivoting.h>
    

    次に点群を作成します。

    int X = 50;
    int Y = 50;
    
    auto itr = vcg::tri::Allocator<MyMesh>::AddVertices(mesh,X*Y);
    
    for (size_t x = 0; x < X; x++) {
      for (size_t y = 0; y < Y; y++) {
    
        double d1 = rand() % 100 / 2000.0;
        double d2 = rand() % 100 / 2000.0;
        double d3 = rand() % 100 / 7000.0;
    
        double dx = x / (double)X; // 0.0 ~ 1.0の範囲にする
        double dy = y / (double)Y;
    
        itr->P().X() = dx + d1;
        itr->P().Y() = dy + d2;
        itr->P().Z() = d3;
    
        ++itr;
    
      }
    }
    

    Ball Pivotingの実行

    double radius = 0.05;
    double clustering = 0.03;
    tri::BallPivoting<MyMesh> pivot(mesh, radius, clustering);
    pivot.BuildMesh();
    

    BPAは既に存在する点群に対して実行します。
    radiusはボール径です。radiusによって結果が大きく変わります

    VCG Library メッシュからfaceのみを削除する

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryでkdTree

    VCG Library でスムージング

    VCG Library ターゲットの周辺のオブジェクトを取得

    VCG LibraryでMeshに三角形を登録する方法

    VCG Library でポリゴンファイル保存

    VCG Libraryで色のついたポリゴンの読み込み・表示

    VCG LibのFace-FaceやEdge-Faceなどの関連付け

    VCG Library

    VCG LibraryでkdTree

    VCGで点群を検索するサンプルです。

    0. vcg/space/index/kdtree/kdtree.h をinclude

    #include <vcg/space/index/kdtree/kdtree.h>
    

    1.点群を準備

    auto itr = vcg::tri::Allocator<MyMesh>::AddVertices(mesh, 30000);
    for (size_t i = 0; i < 30000; i++) {
      double k1 = rand() / (double)RAND_MAX;
      double k2 = rand() / (double)RAND_MAX;
      double k3 = rand() / (double)RAND_MAX;
      itr[i].P() = vcg::Point3f(k1, k2, k3);
      itr[i].dist = 0.6;
    }
    

    2. 検索結果を格納する配列を定義

    // 検索して得られた頂点IDを格納する
    std::vector<unsigned int> vpid;
    
    // 検索して得られた頂点の、指定した座標からの距離を格納する
    std::vector<float> vpdst;
    

    3.kdTreeで指定した座標付近の点群を取得

    vcg::VertexConstDataWrapper<MyMesh> ww(mesh);
    vcg::KdTree<float> tree(ww);
    
    //検索する座標 p を定義
    vcg::Point3f p(0.5, 0.5, 0.5);
    
    double distance = 0.5;
    //検索
    tree.doQueryDist(p, distance, vpid, vpdst);
    

    4. 取得した点群に対して処理

    //検索して得られた頂点に、pとの二乗距離を格納(distメンバ変数は自分で定義したもの)
    for(int i = 0; i < vpid.size();i++){
      mesh.vert[ vpid[i] ].dist = vpdst[i];
    }
    

    doQueryDist


    doQueryDist(
    const VectorType& queryPoint,
    float dist,
    std::vector& points,
    std::vector& sqrareDists
    )

    SquareDistance

    距離計算に内部で使っているquaredNorm()関数の処理は、

    /// Squared euclidian normal
    inline T SquaredNorm() const
    {
      return _v[0]*_v[0] + _v[1]*_v[1] + _v[2]*_v[2] + _v[3]*_v[3];
    }
    

    となっていますので、実際の距離を知りたい場合はsqrtする必要があります。

    VCG Library メッシュからfaceのみを削除する

    VCG LibraryのBall Pivotingでメッシュ生成

    VCG LibraryでkdTree

    VCG Library でスムージング

    VCG Library ターゲットの周辺のオブジェクトを取得

    VCG LibraryでMeshに三角形を登録する方法

    VCG Library でポリゴンファイル保存

    VCG Libraryで色のついたポリゴンの読み込み・表示

    VCG LibのFace-FaceやEdge-Faceなどの関連付け

    VCG Library


    宗教に関する簡素な考察

    HTML,CSSでliタグのオフセットが高すぎる

    HTMLはたまにしか使わないのでその度に忘れるのでメモ。

    HTMLの<ul><li></li></ul>の、liの左のオフセットが広すぎてなんとかしたいとき。liではなく、ulのpaddingを設定します

    <html>
    <head>
    <style type="text/css">
    <!--
    div.box{
      width:200px;
      height:200px;
      margin-left:50px;
      border:solid thin black;
    }
    ul{
      border:solid thin blue;
      padding-left:0px;
    }
    li{
      border:solid thin red;
    }
    -->
    </style>
    </head>
    <body>
     <div class="box">
      <p>いろは</p>
      <ul>
       <li>こんにちは</li>
       <li>こんばんわ</li>
      </ul>
     </div>
    </body>
    </html>