Arrayモディファイアを使うとオブジェクトが歪んでしまうので。
1.コピーするオブジェクトを作る
2.カーブを用意する
3.オブジェクトをカーブの子にする
※オブジェクトを右クリック→カーブをShift+右クリック→Ctrl+P
4.オブジェクト-[Duplication]-[Frames]
※Speedのチェックを外す
これでパスに沿ってコピーができる
5.カーブを選択し、[Path Animation]のFramesで間隔を調節する
6.同じ場所のFollowのチェックをつけるとオブジェクトの向きがパスに沿うようになる
このやり方だと細かい調整が必要になる場合がある。
カーブの種類を変えたり(頂点を選択して[v])頂点を増やしたり(頂点を二つ選択して[w])して対処する。
最後に、Convert toではうまくメッシュにならなかったので、一旦obj形式でエクスポートしてからインポートして対処した。
2015/05/16追記:
複製したオブジェクトを個別にメッシュにする方法。下記をオブジェクトモードで行う。
① オブジェクトを選択する。
※この時点ではパスに沿って複製されたオブジェクト群は強調が弱く、オリジナルのオブジェクトだけが強調が強い。
②Ctrl + Shift + A を押す。これでオブジェクトが実体化できる。
③3DViewの[オブジェクト]→[シングルユーザー化]→[オブジェクトとデータ]を選択。何か聞かれたらSelected Objectsと答える。
☆と大きな数の表現で一番でかいのは何だという話になって、
私的には那由他が好きだけど一番大きいのは無量大数だろうと思っていた。
http://www.sf.airnet.ne.jp/ts/language/largenumber.html
ら、
http://www.geocities.jp/f9305710/kazu.html
その上がこんなにあるという。
一番トップが不可説不可説転といって、10の37218383881977644441306597687849648128乗の数だという。
はて。10のn乗と言ったときには、1の後に0がn個くっつく。
例えば10の3乗には1000つまり0が三つ。じゃあ不可説不可説転を文字で表してみようと思っても、実はコンピュータの世界では不可能だ。
なぜかというと例えば1[TB](テラバイト)のハードディスクがあったとしても、そこにはどうあがいても1,099,511,627,776個のゼロしか入れられない。つまりゼロが10の12乗個までの数字しか表記できない。2014年11月08日現在、3.5インチHDD(つまりパソコン内蔵のもの)で一番大容量で10[TB]らしいので、10の13乗くらいまではいけるかもしれないが、大差ない。嘘だと思っても試さない方がいい。画像も動画も音楽も大量に保存できる高級なハードディスクに、何が悲しくてひたすら数字の0ばかり書き込まねばならんのか。人生はそんなことのためにあるんじゃない。
ともあれ、今までラスボスだと思っていた無量大数は、クックック。奴は我々単位四天王の中でも最弱・・・レベルの雑魚だった。
というかもう、子供のごっこ遊びで「オレ最強!」「じゃあオレその10倍強い!」「じゃあこっちはその100倍強い!」みたいなノリで適当に名前つけていったらこうなったみたいなアホな誕生秘話がありそうでならない。特に最後のほうはもう不可思とか不可量とか不可説とか、無理無理無理!勘弁して!みたいな感じになっていて、考えた人もよっぽどいやだったんだろうなということが伺えるほどである。鳥山明も同情するんじゃないか。
JavaFXで作ったウィンドウのHWNDを取得する
Windowsではウィンドウハンドルさえあれば大抵のことができてしまう。
からほぼ転載(getWindowPointer)。
getWindowPointerで取得したウィンドウハンドルをHWND型の変数に代入し、
SetWindowTextAでウィンドウのタイトルを変えている。
package fxdemo; import javafx.application.Application; import javafx.stage.Stage; import com.sun.jna.Pointer; import com.sun.jna.platform.win32.WinDef.HWND; import com.sun.jna.Native; import com.sun.jna.win32.StdCallLibrary; import java.lang.reflect.Method; public class JavaApp extends Application{ public static void main(String[] args){ Application.launch(JavaApp.class, args); } public interface User32 extends StdCallLibrary { User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class); int MessageBoxA(HWND hwnd, byte[] text, byte[] caption, int type); int MessageBoxA(HWND hwnd, String text, String caption, int type); boolean SetWindowTextA(HWND hwnd, byte[] text); boolean SetWindowTextA(HWND hwnd, String text); } private static Pointer getWindowPointer( javafx.stage.Window window ) { Pointer retval = null; try { Method m = window.getClass().getMethod("impl_getPeer"); final Object tkStage = m.invoke( window ); m = tkStage.getClass().getDeclaredMethod("getPlatformWindow" ); m.setAccessible( true ); final Object platformWindow = m.invoke( tkStage ); m = platformWindow.getClass().getMethod( "getNativeHandle" ); retval = new Pointer( (Long)m.invoke( platformWindow ) ); } catch (Throwable t) { System.err.println("Error getting Window Pointer"); } return retval; } @Override public void start(Stage stage) { stage.setTitle("Hello"); stage.show(); HWND hwnd = new HWND( getWindowPointer(stage) ); User32 user32 = User32.INSTANCE; user32.SetWindowTextA( hwnd , "こんにちは◎★♪".getBytes() ); } }
詳細は:
様の所にあります。その内容をOpenGL+Cで実装するとこうなります。
ゲーテのファウスト(高橋義孝・訳)。
ようやく読み終わったが、大変に面白くない作品だった。
というか、ギリシャ神話の神とか珍獣が大量に出てくる。ストーリーや会話の意図を理解する上ではわからなくてもほぼ支障はないのだが、理解するだけならWikipedia読めばいい気がする。本よりよほどわかりやすく簡素に内容がわかる。
特に第二部はファウストの出番が少ない。
冒頭100ページくらいが皇帝とその取り巻きの愚にもつかない会話(というと怒られるのだろう)で占められていて、正直ストーリーにどうか変わってくるのかよくわからない。
ファウストの場合は文章を楽しむ作品であってストーリーがどうこうという話ではないのだろう。そういう意味では日本語訳しか読めない時点で手をつけてはいけない作品なのかもしれない。
救いは、1行が短い箇所が多いので、本の厚みの割に(といってもそんなに厚くないのだが)全部読み終える上での文字数的難易度は低い。
例えば、
---------------------------
妖精たち:
消えよ、頭上の
鬱陶しい丸天井よ。
蒼い大気よ、
いよいよやさしく
親しく覗き込め。
そうら、暗い雲も
散り失せた。
星屑がきらきら輝き、
大きな星は太陽よりも
やさしく光る。
......
---------------------------
云々( Faust [一] P101 (一四四七~) )
あるいは、
---------------------------
ファウスト:
証文?うるさいことをいう奴だな。
君は男子というもの、男子の一言というものを知らないのか。
己が一旦口にした言葉は、己の生涯を拘束する。
それだけではいけないというのか。
世界は刻々と流れ動いて一瞬といえども停止せぬ、
それなのにこの己だけは一枚の証文に縛られるというのか。
しかし人はみんななんとなく証文をありがたがって、
そのばかばかしさを考えてみようとはしない。
信義を誠実に胸に懐いている者は仕合わせだ。
どんな犠牲をも後悔することはなかろう。ところが字を書き封印をした羊皮紙は、
化け物のように世間の人を怖がらせる
......
---------------------------
云々( Faust [一] P117 (一七一六~) )
こんな感じで1行が短い。だから耐えられた。が、人にはお勧めできない。
Bezier等のカーブから面を作成し、厚みをつける。
1.まず曲線を引く。
特にXY平面上に描く必要はない。
2.Geometryの項目でExtrudeを増やすと面になる。
3.Solidifyモディファイアを追加し、Thicknessを設定する。OffsetとThicknessの符号は一致させる。つまりOffsetが正の数ならThicknessも+側の値を設定する。
4.ObjectモードでObject - Convert to - Mesh from Curve/Meta/Surf/Textを選択するとメッシュになる。
今日は仕事でこんなクラスを作った。
class BOOLatOnce{
private:
bool flag;
public:
BOOLatOnce(){
flag = false;
}
explicit BOOLatOnce(const bool b){flag = b;}
BOOLatOnce& operator=(const bool b){flag = b;return *this;}
operator bool(){
//評価が行われたら自動でfalseに戻す。
bool b = flag;
flag = false;
return b;
}
};
こいつの使い方は簡単。
BOOLatOnce bat;
bat = true; // bat == true
if( bat ){ // ifの中はtrue
// ここではすでにbat == false
/* ... */
}
普通のboolと違い、一度評価されたら勝手にfalseに戻る。
ソースコードが食中毒にかかったかのようにスマートになること請け合いだ。
後でメンテナンスする人間(一月後の自分含む)が困惑する様子が目に浮かぶ。
もう11月になろうかと言うところで薔薇が咲いている。
さすがにつぼみが開くまでにはかなりかかった。
本当は赤+黄なのだが、いつも赤が出ない。肥料が悪いのだろうか。
銀杏のほうは季節にふさわしく紅葉している
が、同じ日に撮影した銀杏。こいつは室内管理なんだが、青々としている。やはり部屋は暖かいのか。暖かいと駄目なのか。
法線マップ・バンプマップではなく、実際にメッシュの表面に凹凸をつける。
1.立方体を用意
2.Tabを押してEditモードに入り、wキーをしてメニューを開く
Subdivideを繰り返して分割数を増やす
3.Objectモードに戻り、モディファイア[displace]を追加
4.テクスチャへ行き、Newをクリック
5.好きなテクスチャを選ぶ
6.再びDisplaceモディファイアの設定画面へ行き、Textureを選択する。
Strengthで凹凸の高さを変更できる。
MFCで、メニューではなく普通のウィンドウ内にセパレータを置きたい場合、リソースエディタからは、Picture Controlを配置して高さをなくして、Static EdgeプロパティをTrueにすればいい。
ただこれをソースコードからどうやるかと言う話。
CRect separator = CRect(10,0,250,4);
static = new CStatic();
static->Create( _T("") , WS_VISIBLE | WS_CHILD | SS_ETCHEDHORZ , separator , this , ID );
thisはここでは親ウィンドウ。
IDは整数値。