約 4,019,303 件
https://w.atwiki.jp/hmiku/pages/26050.html
【登録タグ D GUMI NexTone管理曲 わかむらP 八王子P 曲 殿堂入り】 作詞:八王子P 作曲:八王子P 編曲:八王子P 唄:GUMI 曲紹介 八王子P の16作目。 PVは わかむらP が手掛ける。 CD 『ViViD WAVE』 収録曲。 歌詞 満足いかない 「普通」はゴメンなの 刺激が欲しいの まだまだ足りないでしょ ココロ高鳴る 終わりはない 先は長いけど 夢と現実(リアル)のボーダーラインを超えた 理想の未来へ Dream Creator 描いたビジョンに近づきたいから Dream Creator まだ見ぬ世界を見てみたいから Dream Creator 溢れる想いをカタチにしたいから 創ろうともに きっと超えられる 自分の可能性信じて 納得いかない 「中途半端」はゴメンなの 妥協はしないの まだまだこれからでしょ ココロときめく ゴールはない 道は険しいけど 夢と現実(リアル)のデッドラインを超えた 輝く未来へ Dream Creator 挫けそうなときも立ち向かえば Dream Creator 乗り越えた数だけ強くなれるから Dream Creator 砕けているのは当たった証さ 創ろうともに きっと超えられる 自分の行く先を信じて Dream Creator 描いたビジョンに近づきたいから Dream Creator まだ見ぬ世界を見てみたいから Dream Creator 溢れる想いをカタチにしたいから 創ろうともに きっと超えられる 自分の可能性信じて コメント 追加おつ! -- 名無しさん (2013-07-05 21 32 40) Doream Coreator で2個目のOいらないんじゃない? -- キル (2013-07-06 22 10 02) 乙~♪ -- 名無しさん (2013-07-07 11 32 54) 八王子P 最高で~す↑(^^_)ルン♪ -- ゆみか (2013-08-23 17 09 22) 素敵です♡ -- 蘭 (2013-08-29 21 27 16) だいすき。(笑) -- 生態紳士 (2013-09-08 01 53 22) ちょー好き☆ -- マカロン (2014-03-30 18 03 31) さすが八王子…曲調といい、歌詞といい、GUMIの声もとても自分好みだ。今まで何故知らなかったのかが不思議なくらい…声の重なり具合も最高。 -- シャト (2014-10-17 21 14 40) この曲音楽プレーヤーに入れてる! -- ミサキ (2014-10-17 21 41 34) 八王子Pさん どれも大好きです><♪ -- みみもも (2016-02-23 23 26 56) 名前 コメント
https://w.atwiki.jp/mizcremorne/pages/309.html
llPushObject llPushObject(key id, vector impulse, vector angular_impulse, integer local) 引数idのUUIDで示されるオブジェクトまたはアバターを、impulse、angular_impulseに指定した強さでプッシュする。 impulseは直線方向に働く力、angular_impulseは回転を与える力になる。 引数localがTRUEだった場合、impulse、angular_impulseの数値はローカル座標系に対する向きと解釈される。 この関数はllPushObjectが"restricted"に設定されている土地上ではオーナーにのみ有効である。 名前 コメント
https://w.atwiki.jp/qtmemo/pages/46.html
関連するイベントクラス QEvent QChildEvent QTimerEvent イベントハンドラー void [[QObject]] childEvent(QChildEvent * event) [virtual protected] このオブジェクトに子を追加、削除などした場合に発生するイベントです。 受け取ったイベントの内容は QChildEvent オブジェクトを通して取得できます。 bool QObject event(QEvent * e) [virtual] オブジェクトで発生したイベントを受け取るイベントハンドラーです。 イベントが認識でき、処理された場合はtrue、そうでない場合はfalseを返します。 イベントフィルター bool QObject eventFilter(QObject * watched, QEvent * event) [virtual] 指定したオブジェクトのイベントフィルターがこのオブジェクトにインストールされている場合は、イベントをフィルターします。 この関数を再定義する際、イベントをフィルターしたい場合はtrue、そうでない場合はfalseを返します。 イベントをフィルターするとは、受け取ったイベントをここで処理して再度ハンドルされるのを防ぐということです。 void QObject installEventFilter(QObject * filterObj) 指定したオブジェクトのイベントフィルターをこのオブジェクトにインストールします。 複数のフィルターをインストールした場合、最後にインストールしたフィルターが最初に有効になります。 フィルターオブジェクトはこのオブジェクトと同じスレッド内に存在しなければなりません。違うスレッドにフィルターオブジェクトが存在する場合は、この関数は何もしません。この関数が呼ばれてからフィルターオブジェクトまたはこのオブジェクトが違うスレッドに移動した場合は両方が同じスレッドになるまでイベントフィルターは呼ばれません。 void QObject removeEventFilter(QObject * obj) 指定したオブジェクトのイベントフィルターをこのオブジェクトからアンインストールします。 タイマーイベント void QObject timerEvent(QTimerEvent * event) [virtual protected] タイマーイベントを受け取るイベントハンドラーです。 int QObject startTimer(int interval, Qt TimerType timerType = Qt CoarseTimer) タイマーを開始し、タイマーIDを返します。 タイマーが開始できなかった場合は0を返します。 タイマーイベントは killTimer() が呼ばれるまで指定した間隔で発行されます。 間隔に0を指定した場合は、処理されるウィンドウシステムイベントがなくなるたびに一度だけ呼ばれます。 パラメータ interval タイマーイベントを発行する間隔をミリ秒単位で指定します。 void QObject killTimer(int id) 指定したタイマーIDを停止します。
https://w.atwiki.jp/snunlimited/pages/195.html
WASH, RINSE, DRY PLACE A DIRTY DISH IN AN APPLIANCE THAT CLEANS IT! クリア可能な言葉 DISHWASHERにDIRTY DISHを入れる IT S A TRAP! CATCH A RODENT IN A TRAP! クリア可能な言葉 THAE CLICKER! TURN AN OBJECT ON OR OFF USING A REMOTE CONTROL! クリア可能な言葉 TVをREMOTE CONTROLEを持った状態でONまたはOFFにする THERE S A SMOKEY ON YOUR TAIL! TRY TO MAKE CONTACT WITH A TRUCK DRIVER USING THE TYPE OF RADIO THEY USE! クリア可能な言葉 SAY WHAT? AID SOMEONE WHO IS DEAF BY GIVING THEM A SMALL DEVICE THAT IMPROVES HEARING! クリア可能な言葉 RISE AND SHINE! WAKE SOMEONE UP USING A CLOCK THAT IS SPECIFICALLY DESIGNED FOR SUCH PURPOSES! クリア可能な言葉 ALARM CLOCKで寝ている人を起こす DROP ME A LINE! USE SOMETHING THAT YOU DIAL TO CALL SOMEONE! クリア可能な言葉 FIRE! PLACE SOMETHING NEAR A FIRE ALARM THAT WILL SET IT OFF! クリア可能な言葉 FIRE ALARMの近くにFIREを置く CLIPPED! CLIP SOMEONE S TOENAILS! クリア可能な言葉 NAIL CLIPPERを誰かの近くで使用する ONE ARMED BANDIT! TEST YOUR LUCK BY USING THIS POPULAR CASINO GAMBLING MACHINE! クリア可能な言葉 SLOT MACHINEを起動する NOT THE SHARPEST PENCIL IN THE DRAWER! MAKE A PENCIL MORE EFFECTIVE BY SHARPENING IT ANY WAY YOU WANT! クリア可能な言葉 PENCILを持った状態でPENCIL SHARPENERを使用する FIREY FURNACE! PUT SOMETHING MADE OF CLAY IN A SPECIAL OVEN THAT FIRES THE CLAY INTO A CERAMIC! クリア可能な言葉 SAY YES TO RUDS! MAKE A RUG USING A MACHINE THAT WEAVES FABRICS! クリア可能な言葉 VEND FOR YOURSELF! PUT SOMETHING IN A VENDING MACHINE THAT CAUSES IT TO GIVE YOU A TREAT! クリア可能な言葉 DUCES ARE WILD WILD WILD! GIVE A BOOKIE SOME TECHNOLOGY TO HELP EXPAND THE FAMILY BUSINESS TO THE INTERNET! クリア可能な言葉 NO SAFE IS SAFE! CREATE SOMEONE WHO IS PRO AT CRACKING SAFES AND MAKE THEM A SAFE TO CRACK! クリア可能な言葉 OH NO MY PARTICLES COLLIDED! CREATE A LARGE HADRON COLLIDER AND SEE WHAT HAPPENS WHEN YOU USE IT! クリア可能な言葉 HADRON COLLIDERを使用する DOUBLE THE TROUBLE! USE THE CLONING MACHINE TO DUPLICATE SOMETHING! クリア可能な言葉 MONEY LAUNDERING! PUT SOME MONEY IN AN APPLIANCE THAT CLEANS CLOTHES! クリア可能な言葉 WHERE THERE S SMOKE… SET OFF A SMOKE DETECTOR TO BE SURE IT IS WORKING PROPERLY! クリア可能な言葉 CLICK CLICK CLICK DING! USE SOMETHING TO TYPE THAT PREDATES THE COMPUTER AND KEYBOARD! クリア可能な言葉 TYPEWRITERを使用する BUMPER BONUS! PLAY WITH A MACHINE THAT USES FLIPPERS ON A SLANTED SURFACE TO KEEP A BALL BOUNCING AROUND SCORING POINTS! クリア可能な言葉 PINBALLを使用する GENTLY DOWN THE STREAM! TAKE A SEAT ON AN EXERCISE MACHINE THAT SIMULATES ROWING A BOAT! クリア可能な言葉 IT S A LIGHT BAT! COMBINE A LAMP SHADE WITH THE SPORTS EQUIPMENT USED TO HIT HOME RUNS! クリア可能な言葉 ARE YOU AFRAID OF THE DARK? CREATE THE KIND OF LIGHT THAT LIGHTS ROADWAYS AND TURN IT OFF! クリア可能な言葉 GAME OF THE YEAR! クリア可能な言葉
https://w.atwiki.jp/electronica/pages/106.html
Push Button Objects アーティストプロフィール アーティストHP (text by ) アルバムタイトル リリースデータなど 本文 (text by ) 名前 コメント
https://w.atwiki.jp/natsutan/pages/32.html
概要 TCLインタープリタの生成 tcl/generic/tclBasic.c 引数 無し 戻り値 Tcl_Interp* 生成したTCLインタープリタへのポインタ0 処理 変数宣言 Interp *iPtr; Tcl_Interp *interp; Command *cmdPtr; const BuiltinFuncDef *builtinFuncPtr; const OpCmdInfo *opcmdInfoPtr; const CmdInfo *cmdInfoPtr; Tcl_Namespace *mathfuncNSPtr, *mathopNSPtr; union { char c[sizeof(short)]; short s; } order; ByteCodeStats *statsPtr; char mathFuncName[32]; CallFrame *framePtr; int result; TclInitSubsystems(); /* * Panic if someone updated the CallFrame structure without also updating * the Tcl_CallFrame structure (or vice versa). */ if (sizeof(Tcl_CallFrame) sizeof(CallFrame)) { /*NOTREACHED*/ [[Tcl_Panic]]("Tcl_CallFrame must not be smaller than CallFrame"); } /* * Initialize support for namespaces and create the global namespace * (whose name is ""; an alias is " "). This also initializes the Tcl * object type table and other object management code. */ iPtr = (Interp *) ckalloc(sizeof(Interp)); interp = (Tcl_Interp *) iPtr; iPtr- result = iPtr- resultSpace; iPtr- freeProc = NULL; iPtr- errorLine = 0; iPtr- objResultPtr = Tcl_NewObj(); Tcl_IncrRefCount(iPtr- objResultPtr); iPtr- handle = TclHandleCreate(iPtr); iPtr- globalNsPtr = NULL; iPtr- hiddenCmdTablePtr = NULL; iPtr- interpInfo = NULL; iPtr- numLevels = 0; iPtr- maxNestingDepth = MAX_NESTING_DEPTH; iPtr- framePtr = NULL;/* Initialise as soon as is available */ iPtr- varFramePtr = NULL;/* Initialise as soon as is available */ /* * TIP #280 - Initialize the arrays used to extend the ByteCode and * Proc structures. */ iPtr- cmdFramePtr = NULL; iPtr- linePBodyPtr = ([[Tcl_HashTable]] *) ckalloc(sizeof(Tcl_HashTable)); iPtr- lineBCPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); iPtr- lineLAPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); iPtr- lineLABCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(iPtr- linePBodyPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr- lineBCPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr- lineLAPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr- lineLABCPtr, TCL_ONE_WORD_KEYS); iPtr- scriptCLLocPtr = NULL; iPtr- activeVarTracePtr = NULL; iPtr- returnOpts = NULL; iPtr- errorInfo = NULL; TclNewLiteralStringObj(iPtr- eiVar, " errorInfo"); Tcl_IncrRefCount(iPtr- eiVar); iPtr- errorCode = NULL; TclNewLiteralStringObj(iPtr- ecVar, " errorCode"); Tcl_IncrRefCount(iPtr- ecVar); iPtr- returnLevel = 1; iPtr- returnCode = TCL_OK; iPtr- rootFramePtr = NULL;/* Initialise as soon as is available */ iPtr- lookupNsPtr = NULL; iPtr- appendResult = NULL; iPtr- appendAvl = 0; iPtr- appendUsed = 0; Tcl_InitHashTable( iPtr- packageTable, TCL_STRING_KEYS); iPtr- packageUnknown = NULL; /* TIP #268 */ if (getenv("TCL_PKG_PREFER_LATEST") == NULL) { iPtr- packagePrefer = PKG_PREFER_STABLE; } else { iPtr- packagePrefer = PKG_PREFER_LATEST; } iPtr- cmdCount = 0; TclInitLiteralTable( (iPtr- literalTable)); iPtr- compileEpoch = 0; iPtr- compiledProcPtr = NULL; iPtr- resolverPtr = NULL; iPtr- evalFlags = 0; iPtr- scriptFile = NULL; iPtr- flags = 0; iPtr- tracePtr = NULL; iPtr- tracesForbiddingInline = 0; iPtr- activeCmdTracePtr = NULL; iPtr- activeInterpTracePtr = NULL; iPtr- assocData = NULL; iPtr- execEnvPtr = NULL;/* Set after namespaces initialized. */ iPtr- emptyObjPtr = Tcl_NewObj(); /* Another empty object. */ Tcl_IncrRefCount(iPtr- emptyObjPtr); iPtr- resultSpace[0] = 0; iPtr- threadId = Tcl_GetCurrentThread(); /* TIP #378 */ #ifdef TCL_INTERP_DEBUG_FRAME iPtr- flags |= INTERP_DEBUG_FRAME; #else if (getenv("TCL_INTERP_DEBUG_FRAME") != NULL) { iPtr- flags |= INTERP_DEBUG_FRAME; } #endif /* * Initialise the tables for variable traces and searches *before* * creating the global ns - so that the trace on errorInfo can be * recorded. */ Tcl_InitHashTable( iPtr- varTraces, TCL_ONE_WORD_KEYS); Tcl_InitHashTable( iPtr- varSearches, TCL_ONE_WORD_KEYS); iPtr- globalNsPtr = NULL;/* Force creation of global ns below. */ iPtr- globalNsPtr = (Namespace *) Tcl_CreateNamespace(interp, "", NULL, NULL); if (iPtr- globalNsPtr == NULL) { Tcl_Panic("Tcl_CreateInterp can't create global namespace"); } /* * Initialise the rootCallframe. It cannot be allocated on the stack, as * it has to be in place before TclCreateExecEnv tries to use a variable. */ /* This is needed to satisfy GCC 3.3's strict aliasing rules */ framePtr = (CallFrame *) ckalloc(sizeof(CallFrame)); result = Tcl_PushCallFrame(interp, (Tcl_CallFrame *) framePtr, (Tcl_Namespace *) iPtr- globalNsPtr, /*isProcCallFrame*/ 0); if (result != TCL_OK) { Tcl_Panic("Tcl_CreateInterp failed to push the root stack frame"); } framePtr- objc = 0; iPtr- framePtr = framePtr; iPtr- varFramePtr = framePtr; iPtr- rootFramePtr = framePtr; /* * Initialize support for code compilation and execution. We call * TclCreateExecEnv after initializing namespaces since it tries to * reference a Tcl variable (it links to the Tcl "tcl_traceExec" * variable). */ iPtr- execEnvPtr = TclCreateExecEnv(interp); /* * TIP #219, Tcl Channel Reflection API support. */ iPtr- chanMsg = NULL; /* * Initialize the compilation and execution statistics kept for this * interpreter. */ #ifdef TCL_COMPILE_STATS statsPtr = (iPtr- stats); statsPtr- numExecutions = 0; statsPtr- numCompilations = 0; statsPtr- numByteCodesFreed = 0; (void) memset(statsPtr- instructionCount, 0, sizeof(statsPtr- instructionCount)); statsPtr- totalSrcBytes = 0.0; statsPtr- totalByteCodeBytes = 0.0; statsPtr- currentSrcBytes = 0.0; statsPtr- currentByteCodeBytes = 0.0; (void) memset(statsPtr- srcCount, 0, sizeof(statsPtr- srcCount)); (void) memset(statsPtr- byteCodeCount, 0, sizeof(statsPtr- byteCodeCount)); (void) memset(statsPtr- lifetimeCount, 0, sizeof(statsPtr- lifetimeCount)); statsPtr- currentInstBytes = 0.0; statsPtr- currentLitBytes = 0.0; statsPtr- currentExceptBytes = 0.0; statsPtr- currentAuxBytes = 0.0; statsPtr- currentCmdMapBytes = 0.0; statsPtr- numLiteralsCreated = 0; statsPtr- totalLitStringBytes = 0.0; statsPtr- currentLitStringBytes = 0.0; (void) memset(statsPtr- literalCount, 0, sizeof(statsPtr- literalCount)); #endif /* TCL_COMPILE_STATS */ /* * Initialise the stub table pointer. */ iPtr- stubTable = tclStubs; /* * Initialize the ensemble error message rewriting support. */ iPtr- ensembleRewrite.sourceObjs = NULL; iPtr- ensembleRewrite.numRemovedObjs = 0; iPtr- ensembleRewrite.numInsertedObjs = 0; /* * TIP#143 Initialise the resource limit support. */ TclInitLimitSupport(interp); /* * Initialise the thread-specific data ekeko. */ #if defined(TCL_THREADS) defined(USE_THREAD_ALLOC) iPtr- allocCache = TclpGetAllocCache(); #else iPtr- allocCache = NULL; #endif iPtr- pendingObjDataPtr = NULL; iPtr- asyncReadyPtr = TclGetAsyncReadyPtr(); /* * Insure that the stack checking mechanism for this interp is * initialized. */ GetCStackParams(iPtr); /* * Create the core commands. Do it here, rather than calling * Tcl_CreateCommand, because it's faster (there's no need to check for a * pre-existing command by the same name). If a command has a Tcl_CmdProc * but no Tcl_ObjCmdProc, set the Tcl_ObjCmdProc to * TclInvokeStringCommand. This is an object-based wrapper function that * extracts strings, calls the string function, and creates an object for * the result. Similarly, if a command has a Tcl_ObjCmdProc but no * Tcl_CmdProc, set the Tcl_CmdProc to TclInvokeObjectCommand. */ for (cmdInfoPtr = builtInCmds; cmdInfoPtr- name != NULL; cmdInfoPtr++) { int isNew; [[Tcl_HashEntry]] *hPtr; if ((cmdInfoPtr- objProc == NULL) (cmdInfoPtr- compileProc == NULL)) { Tcl_Panic("builtin command with NULL object command proc and a NULL compile proc"); } hPtr = Tcl_CreateHashEntry( iPtr- globalNsPtr- cmdTable, cmdInfoPtr- name, isNew); if (isNew) { cmdPtr = (Command *) ckalloc(sizeof(Command)); cmdPtr- hPtr = hPtr; cmdPtr- nsPtr = iPtr- globalNsPtr; cmdPtr- refCount = 1; cmdPtr- cmdEpoch = 0; cmdPtr- compileProc = cmdInfoPtr- compileProc; cmdPtr- proc = TclInvokeObjectCommand; cmdPtr- clientData = cmdPtr; cmdPtr- objProc = cmdInfoPtr- objProc; cmdPtr- objClientData = NULL; cmdPtr- deleteProc = NULL; cmdPtr- deleteData = NULL; cmdPtr- flags = 0; cmdPtr- importRefPtr = NULL; cmdPtr- tracePtr = NULL; Tcl_SetHashValue(hPtr, cmdPtr); } } /* * Create the "chan", "dict", "info" and "string" ensembles. Note that all * these commands (and their subcommands that are not present in the * global namespace) are wholly safe. */ TclInitChanCmd(interp); TclInitDictCmd(interp); TclInitInfoCmd(interp); TclInitStringCmd(interp); /* * Register "clock" subcommands. These *do* go through * Tcl_CreateObjCommand, since they aren't in the global namespace and * involve ensembles. */ TclClockInit(interp); /* * Register the built-in functions. This is empty now that they are * implemented as commands in the tcl mathfunc namespace. */ /* * Register the default [interp bgerror] handler. */ Tcl_CreateObjCommand(interp, " tcl Bgerror", TclDefaultBgErrorHandlerObjCmd, NULL, NULL); /* * Create an unsupported command for debugging bytecode. */ Tcl_CreateObjCommand(interp, " tcl unsupported disassemble", Tcl_DisassembleObjCmd, NULL, NULL); #ifdef USE_DTRACE /* * Register the tcl dtrace command. */ Tcl_CreateObjCommand(interp, " tcl dtrace", DTraceObjCmd, NULL, NULL); #endif /* USE_DTRACE */ /* * Register the builtin math functions. */ mathfuncNSPtr = Tcl_CreateNamespace(interp, " tcl mathfunc", NULL,NULL); if (mathfuncNSPtr == NULL) { Tcl_Panic("Can't create math function namespace"); } strcpy(mathFuncName, " tcl mathfunc "); #define MATH_FUNC_PREFIX_LEN 17 /* == strlen(" tcl mathfunc ") */ for (builtinFuncPtr = BuiltinFuncTable; builtinFuncPtr- name != NULL; builtinFuncPtr++) { strcpy(mathFuncName+MATH_FUNC_PREFIX_LEN, builtinFuncPtr- name); Tcl_CreateObjCommand(interp, mathFuncName, builtinFuncPtr- objCmdProc, builtinFuncPtr- clientData, NULL); Tcl_Export(interp, mathfuncNSPtr, builtinFuncPtr- name, 0); } /* * Register the mathematical "operator" commands. [TIP #174] */ mathopNSPtr = Tcl_CreateNamespace(interp, " tcl mathop", NULL, NULL); #define MATH_OP_PREFIX_LEN 15 /* == strlen(" tcl mathop ") */ if (mathopNSPtr == NULL) { Tcl_Panic("can't create math operator namespace"); } (void) Tcl_Export(interp, mathopNSPtr, "*", 1); strcpy(mathFuncName, " tcl mathop "); for (opcmdInfoPtr=mathOpCmds ; opcmdInfoPtr- name!=NULL ; opcmdInfoPtr++){ TclOpCmdClientData *occdPtr = (TclOpCmdClientData *) ckalloc(sizeof(TclOpCmdClientData)); occdPtr- op = opcmdInfoPtr- name; occdPtr- i.numArgs = opcmdInfoPtr- i.numArgs; occdPtr- expected = opcmdInfoPtr- expected; strcpy(mathFuncName + MATH_OP_PREFIX_LEN, opcmdInfoPtr- name); cmdPtr = (Command *) Tcl_CreateObjCommand(interp, mathFuncName, opcmdInfoPtr- objProc, occdPtr, DeleteOpCmdClientData); if (cmdPtr == NULL) { Tcl_Panic("failed to create math operator %s", opcmdInfoPtr- name); } else if (opcmdInfoPtr- compileProc != NULL) { cmdPtr- compileProc = opcmdInfoPtr- compileProc; } } /* * Do Multiple/Safe Interps Tcl init stuff */ TclInterpInit(interp); TclSetupEnv(interp); /* * TIP #59 Make embedded configuration information available. */ TclInitEmbeddedConfigurationInformation(interp); /* * Compute the byte order of this machine. */ order.s = 1; Tcl_SetVar2(interp, "tcl_platform", "byteOrder", ((order.c[0] == 1) ? "littleEndian" "bigEndian"), TCL_GLOBAL_ONLY); Tcl_SetVar2Ex(interp, "tcl_platform", "wordSize", Tcl_NewLongObj((long) sizeof(long)), TCL_GLOBAL_ONLY); /* TIP #291 */ Tcl_SetVar2Ex(interp, "tcl_platform", "pointerSize", Tcl_NewLongObj((long) sizeof(void *)), TCL_GLOBAL_ONLY); /* * Set up other variables such as tcl_version and tcl_library */ Tcl_SetVar(interp, "tcl_patchLevel", TCL_PATCH_LEVEL, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "tcl_version", TCL_VERSION, TCL_GLOBAL_ONLY); Tcl_TraceVar2(interp, "tcl_precision", NULL, TCL_GLOBAL_ONLY|TCL_TRACE_READS|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, TclPrecTraceProc, NULL); TclpSetVariables(interp); #ifdef TCL_THREADS /* * The existence of the "threaded" element of the tcl_platform array * indicates that this particular Tcl shell has been compiled with threads * turned on. Using "info exists tcl_platform(threaded)" a Tcl script can * introspect on the interpreter level of thread safety. */ Tcl_SetVar2(interp, "tcl_platform", "threaded", "1", TCL_GLOBAL_ONLY); #endif /* * Register Tcl's version number. * TIP #268 Full patchlevel instead of just major.minor */ Tcl_PkgProvideEx(interp, "Tcl", TCL_PATCH_LEVEL, tclStubs); #ifdef Tcl_InitStubs #undef Tcl_InitStubs #endif Tcl_InitStubs(interp, TCL_VERSION, 1); if (TclTommath_Init(interp) != TCL_OK) { Tcl_Panic("%s", Tcl_GetString(Tcl_GetObjResult(interp))); } return interp; } ソース /* *---------------------------------------------------------------------- * * Tcl_CreateInterp -- * *Create a new TCL command interpreter. * * Results *The return value is a token for the interpreter, which may be used in *calls to functions like Tcl_CreateCmd, Tcl_Eval, or Tcl_DeleteInterp. * * Side effects *The command interpreter is initialized with the built-in commands and *with the variables documented in tclvars(n). * *---------------------------------------------------------------------- */ Tcl_Interp * Tcl_CreateInterp(void) { Interp *iPtr; Tcl_Interp *interp; Command *cmdPtr; const BuiltinFuncDef *builtinFuncPtr; const OpCmdInfo *opcmdInfoPtr; const CmdInfo *cmdInfoPtr; Tcl_Namespace *mathfuncNSPtr, *mathopNSPtr; union { char c[sizeof(short)]; short s; } order; #ifdef TCL_COMPILE_STATS ByteCodeStats *statsPtr; #endif /* TCL_COMPILE_STATS */ char mathFuncName[32]; CallFrame *framePtr; int result; TclInitSubsystems(); /* * Panic if someone updated the CallFrame structure without also updating * the Tcl_CallFrame structure (or vice versa). */ if (sizeof(Tcl_CallFrame) sizeof(CallFrame)) { /*NOTREACHED*/ Tcl_Panic("Tcl_CallFrame must not be smaller than CallFrame"); } /* * Initialize support for namespaces and create the global namespace * (whose name is ""; an alias is " "). This also initializes the Tcl * object type table and other object management code. */ iPtr = (Interp *) ckalloc(sizeof(Interp)); interp = (Tcl_Interp *) iPtr; iPtr- result = iPtr- resultSpace; iPtr- freeProc = NULL; iPtr- errorLine = 0; iPtr- objResultPtr = Tcl_NewObj(); Tcl_IncrRefCount(iPtr- objResultPtr); iPtr- handle = TclHandleCreate(iPtr); iPtr- globalNsPtr = NULL; iPtr- hiddenCmdTablePtr = NULL; iPtr- interpInfo = NULL; iPtr- numLevels = 0; iPtr- maxNestingDepth = MAX_NESTING_DEPTH; iPtr- framePtr = NULL;/* Initialise as soon as is available */ iPtr- varFramePtr = NULL;/* Initialise as soon as is available */ /* * TIP #280 - Initialize the arrays used to extend the ByteCode and * Proc structures. */ iPtr- cmdFramePtr = NULL; iPtr- linePBodyPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); iPtr- lineBCPtr = (Tcl_HashTable *) ckalloc(sizeof(Tcl_HashTable)); iPtr- lineLAPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); iPtr- lineLABCPtr = (Tcl_HashTable*) ckalloc (sizeof (Tcl_HashTable)); Tcl_InitHashTable(iPtr- linePBodyPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr- lineBCPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr- lineLAPtr, TCL_ONE_WORD_KEYS); Tcl_InitHashTable(iPtr- lineLABCPtr, TCL_ONE_WORD_KEYS); iPtr- scriptCLLocPtr = NULL; iPtr- activeVarTracePtr = NULL; iPtr- returnOpts = NULL; iPtr- errorInfo = NULL; TclNewLiteralStringObj(iPtr- eiVar, " errorInfo"); Tcl_IncrRefCount(iPtr- eiVar); iPtr- errorCode = NULL; TclNewLiteralStringObj(iPtr- ecVar, " errorCode"); Tcl_IncrRefCount(iPtr- ecVar); iPtr- returnLevel = 1; iPtr- returnCode = TCL_OK; iPtr- rootFramePtr = NULL;/* Initialise as soon as is available */ iPtr- lookupNsPtr = NULL; iPtr- appendResult = NULL; iPtr- appendAvl = 0; iPtr- appendUsed = 0; Tcl_InitHashTable( iPtr- packageTable, TCL_STRING_KEYS); iPtr- packageUnknown = NULL; /* TIP #268 */ if (getenv("TCL_PKG_PREFER_LATEST") == NULL) { iPtr- packagePrefer = PKG_PREFER_STABLE; } else { iPtr- packagePrefer = PKG_PREFER_LATEST; } iPtr- cmdCount = 0; TclInitLiteralTable( (iPtr- literalTable)); iPtr- compileEpoch = 0; iPtr- compiledProcPtr = NULL; iPtr- resolverPtr = NULL; iPtr- evalFlags = 0; iPtr- scriptFile = NULL; iPtr- flags = 0; iPtr- tracePtr = NULL; iPtr- tracesForbiddingInline = 0; iPtr- activeCmdTracePtr = NULL; iPtr- activeInterpTracePtr = NULL; iPtr- assocData = NULL; iPtr- execEnvPtr = NULL;/* Set after namespaces initialized. */ iPtr- emptyObjPtr = Tcl_NewObj(); /* Another empty object. */ Tcl_IncrRefCount(iPtr- emptyObjPtr); iPtr- resultSpace[0] = 0; iPtr- threadId = Tcl_GetCurrentThread(); /* TIP #378 */ #ifdef TCL_INTERP_DEBUG_FRAME iPtr- flags |= INTERP_DEBUG_FRAME; #else if (getenv("TCL_INTERP_DEBUG_FRAME") != NULL) { iPtr- flags |= INTERP_DEBUG_FRAME; } #endif /* * Initialise the tables for variable traces and searches *before* * creating the global ns - so that the trace on errorInfo can be * recorded. */ Tcl_InitHashTable( iPtr- varTraces, TCL_ONE_WORD_KEYS); Tcl_InitHashTable( iPtr- varSearches, TCL_ONE_WORD_KEYS); iPtr- globalNsPtr = NULL;/* Force creation of global ns below. */ iPtr- globalNsPtr = (Namespace *) Tcl_CreateNamespace(interp, "", NULL, NULL); if (iPtr- globalNsPtr == NULL) { Tcl_Panic("Tcl_CreateInterp can't create global namespace"); } /* * Initialise the rootCallframe. It cannot be allocated on the stack, as * it has to be in place before TclCreateExecEnv tries to use a variable. */ /* This is needed to satisfy GCC 3.3's strict aliasing rules */ framePtr = (CallFrame *) ckalloc(sizeof(CallFrame)); result = Tcl_PushCallFrame(interp, (Tcl_CallFrame *) framePtr, (Tcl_Namespace *) iPtr- globalNsPtr, /*isProcCallFrame*/ 0); if (result != TCL_OK) { Tcl_Panic("Tcl_CreateInterp failed to push the root stack frame"); } framePtr- objc = 0; iPtr- framePtr = framePtr; iPtr- varFramePtr = framePtr; iPtr- rootFramePtr = framePtr; /* * Initialize support for code compilation and execution. We call * TclCreateExecEnv after initializing namespaces since it tries to * reference a Tcl variable (it links to the Tcl "tcl_traceExec" * variable). */ iPtr- execEnvPtr = TclCreateExecEnv(interp); /* * TIP #219, Tcl Channel Reflection API support. */ iPtr- chanMsg = NULL; /* * Initialize the compilation and execution statistics kept for this * interpreter. */ #ifdef TCL_COMPILE_STATS statsPtr = (iPtr- stats); statsPtr- numExecutions = 0; statsPtr- numCompilations = 0; statsPtr- numByteCodesFreed = 0; (void) memset(statsPtr- instructionCount, 0, sizeof(statsPtr- instructionCount)); statsPtr- totalSrcBytes = 0.0; statsPtr- totalByteCodeBytes = 0.0; statsPtr- currentSrcBytes = 0.0; statsPtr- currentByteCodeBytes = 0.0; (void) memset(statsPtr- srcCount, 0, sizeof(statsPtr- srcCount)); (void) memset(statsPtr- byteCodeCount, 0, sizeof(statsPtr- byteCodeCount)); (void) memset(statsPtr- lifetimeCount, 0, sizeof(statsPtr- lifetimeCount)); statsPtr- currentInstBytes = 0.0; statsPtr- currentLitBytes = 0.0; statsPtr- currentExceptBytes = 0.0; statsPtr- currentAuxBytes = 0.0; statsPtr- currentCmdMapBytes = 0.0; statsPtr- numLiteralsCreated = 0; statsPtr- totalLitStringBytes = 0.0; statsPtr- currentLitStringBytes = 0.0; (void) memset(statsPtr- literalCount, 0, sizeof(statsPtr- literalCount)); #endif /* TCL_COMPILE_STATS */ /* * Initialise the stub table pointer. */ iPtr- stubTable = tclStubs; /* * Initialize the ensemble error message rewriting support. */ iPtr- ensembleRewrite.sourceObjs = NULL; iPtr- ensembleRewrite.numRemovedObjs = 0; iPtr- ensembleRewrite.numInsertedObjs = 0; /* * TIP#143 Initialise the resource limit support. */ TclInitLimitSupport(interp); /* * Initialise the thread-specific data ekeko. */ #if defined(TCL_THREADS) defined(USE_THREAD_ALLOC) iPtr- allocCache = TclpGetAllocCache(); #else iPtr- allocCache = NULL; #endif iPtr- pendingObjDataPtr = NULL; iPtr- asyncReadyPtr = TclGetAsyncReadyPtr(); /* * Insure that the stack checking mechanism for this interp is * initialized. */ GetCStackParams(iPtr); /* * Create the core commands. Do it here, rather than calling * Tcl_CreateCommand, because it's faster (there's no need to check for a * pre-existing command by the same name). If a command has a Tcl_CmdProc * but no Tcl_ObjCmdProc, set the Tcl_ObjCmdProc to * TclInvokeStringCommand. This is an object-based wrapper function that * extracts strings, calls the string function, and creates an object for * the result. Similarly, if a command has a Tcl_ObjCmdProc but no * Tcl_CmdProc, set the Tcl_CmdProc to TclInvokeObjectCommand. */ for (cmdInfoPtr = builtInCmds; cmdInfoPtr- name != NULL; cmdInfoPtr++) { int isNew; Tcl_HashEntry *hPtr; if ((cmdInfoPtr- objProc == NULL) (cmdInfoPtr- compileProc == NULL)) { Tcl_Panic("builtin command with NULL object command proc and a NULL compile proc"); } hPtr = Tcl_CreateHashEntry( iPtr- globalNsPtr- cmdTable, cmdInfoPtr- name, isNew); if (isNew) { cmdPtr = (Command *) ckalloc(sizeof(Command)); cmdPtr- hPtr = hPtr; cmdPtr- nsPtr = iPtr- globalNsPtr; cmdPtr- refCount = 1; cmdPtr- cmdEpoch = 0; cmdPtr- compileProc = cmdInfoPtr- compileProc; cmdPtr- proc = TclInvokeObjectCommand; cmdPtr- clientData = cmdPtr; cmdPtr- objProc = cmdInfoPtr- objProc; cmdPtr- objClientData = NULL; cmdPtr- deleteProc = NULL; cmdPtr- deleteData = NULL; cmdPtr- flags = 0; cmdPtr- importRefPtr = NULL; cmdPtr- tracePtr = NULL; Tcl_SetHashValue(hPtr, cmdPtr); } } /* * Create the "chan", "dict", "info" and "string" ensembles. Note that all * these commands (and their subcommands that are not present in the * global namespace) are wholly safe. */ TclInitChanCmd(interp); TclInitDictCmd(interp); TclInitInfoCmd(interp); TclInitStringCmd(interp); /* * Register "clock" subcommands. These *do* go through * Tcl_CreateObjCommand, since they aren't in the global namespace and * involve ensembles. */ TclClockInit(interp); /* * Register the built-in functions. This is empty now that they are * implemented as commands in the tcl mathfunc namespace. */ /* * Register the default [interp bgerror] handler. */ Tcl_CreateObjCommand(interp, " tcl Bgerror", TclDefaultBgErrorHandlerObjCmd, NULL, NULL); /* * Create an unsupported command for debugging bytecode. */ Tcl_CreateObjCommand(interp, " tcl unsupported disassemble", Tcl_DisassembleObjCmd, NULL, NULL); #ifdef USE_DTRACE /* * Register the tcl dtrace command. */ Tcl_CreateObjCommand(interp, " tcl dtrace", DTraceObjCmd, NULL, NULL); #endif /* USE_DTRACE */ /* * Register the builtin math functions. */ mathfuncNSPtr = Tcl_CreateNamespace(interp, " tcl mathfunc", NULL,NULL); if (mathfuncNSPtr == NULL) { Tcl_Panic("Can't create math function namespace"); } strcpy(mathFuncName, " tcl mathfunc "); #define MATH_FUNC_PREFIX_LEN 17 /* == strlen(" tcl mathfunc ") */ for (builtinFuncPtr = BuiltinFuncTable; builtinFuncPtr- name != NULL; builtinFuncPtr++) { strcpy(mathFuncName+MATH_FUNC_PREFIX_LEN, builtinFuncPtr- name); Tcl_CreateObjCommand(interp, mathFuncName, builtinFuncPtr- objCmdProc, builtinFuncPtr- clientData, NULL); Tcl_Export(interp, mathfuncNSPtr, builtinFuncPtr- name, 0); } /* * Register the mathematical "operator" commands. [TIP #174] */ mathopNSPtr = Tcl_CreateNamespace(interp, " tcl mathop", NULL, NULL); #define MATH_OP_PREFIX_LEN 15 /* == strlen(" tcl mathop ") */ if (mathopNSPtr == NULL) { Tcl_Panic("can't create math operator namespace"); } (void) Tcl_Export(interp, mathopNSPtr, "*", 1); strcpy(mathFuncName, " tcl mathop "); for (opcmdInfoPtr=mathOpCmds ; opcmdInfoPtr- name!=NULL ; opcmdInfoPtr++){ TclOpCmdClientData *occdPtr = (TclOpCmdClientData *) ckalloc(sizeof(TclOpCmdClientData)); occdPtr- op = opcmdInfoPtr- name; occdPtr- i.numArgs = opcmdInfoPtr- i.numArgs; occdPtr- expected = opcmdInfoPtr- expected; strcpy(mathFuncName + MATH_OP_PREFIX_LEN, opcmdInfoPtr- name); cmdPtr = (Command *) Tcl_CreateObjCommand(interp, mathFuncName, opcmdInfoPtr- objProc, occdPtr, DeleteOpCmdClientData); if (cmdPtr == NULL) { Tcl_Panic("failed to create math operator %s", opcmdInfoPtr- name); } else if (opcmdInfoPtr- compileProc != NULL) { cmdPtr- compileProc = opcmdInfoPtr- compileProc; } } /* * Do Multiple/Safe Interps Tcl init stuff */ TclInterpInit(interp); TclSetupEnv(interp); /* * TIP #59 Make embedded configuration information available. */ TclInitEmbeddedConfigurationInformation(interp); /* * Compute the byte order of this machine. */ order.s = 1; Tcl_SetVar2(interp, "tcl_platform", "byteOrder", ((order.c[0] == 1) ? "littleEndian" "bigEndian"), TCL_GLOBAL_ONLY); Tcl_SetVar2Ex(interp, "tcl_platform", "wordSize", Tcl_NewLongObj((long) sizeof(long)), TCL_GLOBAL_ONLY); /* TIP #291 */ Tcl_SetVar2Ex(interp, "tcl_platform", "pointerSize", Tcl_NewLongObj((long) sizeof(void *)), TCL_GLOBAL_ONLY); /* * Set up other variables such as tcl_version and tcl_library */ Tcl_SetVar(interp, "tcl_patchLevel", TCL_PATCH_LEVEL, TCL_GLOBAL_ONLY); Tcl_SetVar(interp, "tcl_version", TCL_VERSION, TCL_GLOBAL_ONLY); Tcl_TraceVar2(interp, "tcl_precision", NULL, TCL_GLOBAL_ONLY|TCL_TRACE_READS|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, TclPrecTraceProc, NULL); TclpSetVariables(interp); #ifdef TCL_THREADS /* * The existence of the "threaded" element of the tcl_platform array * indicates that this particular Tcl shell has been compiled with threads * turned on. Using "info exists tcl_platform(threaded)" a Tcl script can * introspect on the interpreter level of thread safety. */ Tcl_SetVar2(interp, "tcl_platform", "threaded", "1", TCL_GLOBAL_ONLY); #endif /* * Register Tcl's version number. * TIP #268 Full patchlevel instead of just major.minor */ Tcl_PkgProvideEx(interp, "Tcl", TCL_PATCH_LEVEL, tclStubs); #ifdef Tcl_InitStubs #undef Tcl_InitStubs #endif Tcl_InitStubs(interp, TCL_VERSION, 1); if (TclTommath_Init(interp) != TCL_OK) { Tcl_Panic("%s", Tcl_GetString(Tcl_GetObjResult(interp))); } return interp; }
https://w.atwiki.jp/clubutakata/pages/132.html
rc.png http //dev.bukkit.org/bukkit-plugins/recipe-creator/ /recipe add shaped /recipe remove /recipe info recipe-id
https://w.atwiki.jp/hmiku/pages/24388.html
【登録タグ C JASRAC管理曲 たかぴぃ 初音ミク 曲 殿堂入り 紲星あかり 結月ゆかり】 作詞:たかぴぃ 作曲:たかぴぃ 編曲:たかぴぃ 唄:初音ミク(オリジナルver)、結月ゆかり・紲星あかり(セルフカバーver) 曲紹介 たかぴぃ氏 の2作目。 今作も早めのロックですが、歌詞とアレンジを少し捻くれてみました。特に歌詞は完全に自己満足的な内容なので、ご理解頂けなかったらごめんなさい…(作者コメ転載) イラストは bob氏 が手掛ける。 本作にて、自身初の殿堂入りを達成する。 2018年の結月ゆかり・紲星あかり生誕祭に合わせ、同年9月に『ゆかりあかりフェス!奏 2018』で演奏されたセルフカバー版が公開された。 歌詞 ――ねぇ 今夜眠れないの? 徹夜なの? 身体に悪いよ? …まぁ とりあえず おフロ入っちゃえば? ほら メール溜まってるよ 返しなよ! お仕事じゃないの? 『そういやこのところ部屋汚いな…掃除するか!』 って!?遊んでないでさっさとやりなさい! ねぇ 進捗聞かれたよ 言えないよ! まだやってない、と 心配してるんだよ …忘れないで もー! みんな待たせてるよ! 平気なの!? 迷惑掛かるよ!? 『リテイク想定して余裕あるはずだし、たぶん大丈夫』 って!?そんなんだから進まないんじゃんっ! 戻れないんだ 安定した日々に 誘惑多くて集中出来ない コントロール出来ていない Wow 過ぎていく時間に 儚き誓い 『明日、やろう。』 (Creator's Real) どんな時でも (Creator's Real) ストレスいっぱい (Creator's Real) 早め早めを (Creator's Real) 心掛けたい また? 今日も眠れないの? 死んじゃうよ? そろそろヤバいよ? …まぁ とりあえず 歯磨き忘れずに! ほら ケータイ鳴ってるよ 取らないの? 催促じゃないの? 『気分転換に猫動画で癒されよう…』 ってくつろいでないでとっととやりなさい! ねぇ 留守電入ったよ …バレてるよ!? まだ出来てない事!! 気に掛けてくれてるよ …ありがたいね …マジ!? 今日納期だったの!? 正気なの!? もう今日終わるよ!? 『明日朝イチに、鯖にうp出来てりゃサイアク大丈夫』 って!?そんなんだから終わらないんじゃんっ! もう逃げられない 今こそ 立ち向かえ 納品しなくちゃ安眠出来ない おちおちつぶやけやしない No 迫りくる〆切 虚しき祈り 『時よ、止まれ!』 波ー!!! (Creator's Real) 24時間 (Creator's Real) コンビニ顔負け (Creator's Real) またの発注 (Creator's Real) お待ちしてます 納品しちゃえばめくるめく爆睡 …そこへ電話が もしやリテイクー!? 完パケしたけど油断は出来ない 全然先が見えない (lll゜Д゜lll) 忍び寄る別件 嬉しき悲鳴 『おかげさま』と胸に秘めて… (Creator's Real) 兎にも角にも (Creator's Real) 不安でいっぱい (Creator's Real) 単価は安いが (Creator's Real) 仕様が細かい (Creator's Real) 盆暮れ正月 (Creator's Real) 年中無休だ (Creator's Real) どうぞ今後とも よろしくお願い致します (Creator's Real) コメント おちおちつぶやけやしない だと思います! -- 名無しさん (2013-02-04 08 48 36) リピートが止まらないーイントロかっこよすぎw -- 名無しさん (2013-02-04 08 49 51) もーハマったw -- 名無しさん (2013-02-05 21 00 14) 乙乙 -- 名無しさん (2013-02-12 17 13 01) 作業用BGMに最適♪ -- 名無しさん (2013-03-29 15 41 44) 殿堂入りおめでとうございます!定期的に聞きたくなって結局作業が進まないw -- 名無しさん (2013-04-30 17 16 37) これ聞いたら、仕事、なんでも頑張れそう -- 名無しさん (2013-11-05 14 31 18) クリエイターの叫び -- トキワ (2016-01-26 00 11 38) 名前 コメント
https://w.atwiki.jp/terragen/pages/115.html
目次 紹介 はじめに コントロールとユーザ入力 入門ツールバー プロパティパネル サーフェス設定 基本設定Seed Area Size Locked Terrain Width Terrain Length Terrain Height Range Precision Resolution Soil Depth Custom Base Shape Seamless Fractal Noise Properties 一般設定 CPU vs. GPU リアルタイム・ジェネレーション シード タイル作成 環境設定-太陽と海面水位 解像度、サイズ、クオリティ マテリアル 取り込み地形 地形マスクと地形フィルター テクスチャリング テクスチャ設定 配布設定 オブジェクト 樹木 ディティール ディティールメッシュ メッシュ 視覚表現など 作業後 オブジェクト 道路や河川 地形生成 紹介 おめでとう!あなたは今や市販で入手出来るもっとも素晴らしいプロシージャル型の地形と、ランドスケープのジェネレータを手に入れました。これは、2006年にJohannes Rosenberg氏によって開発された強力な『GeoControl』の正統な後継ソフトウエアであり、現在、BiteTheBytes社のStefan Kraus氏とTimo Armbruster氏によって、一から完全に再開発が行われました。 2013年に、 BiteTheBytes社とRosenberg氏は強力なプロシージャル型地形ジェネレーションである『GeoControl』をさらに維持するサポートのために、パートナーシップに入りました。『GeoControl』は『World Creator』に改名され、2014年には、「sediments(セディメント)」と呼ばれる新しいフィルタシステムを含む高度で安定したバージョンが導入されました。 しかし、完全に作り直したバージョンの開発が必要なのは明白でした。新しいバージョンでは、新しいプラットフォームやGPU上で地形を生成するなどの機能の利用を必要とされ、設計プロセス全体を通して真の3Dリアルタイムビューを得る事が出来ねばなりませんした。この新バージョンの使いやすさとユーザインターフェイスの設計には、新しいコンセプトとさらなる開発も必要としました。 あなたは幸運にもWorld Creatorの完全な再開発の成果物を購入しました。多くの機能がすでにこのバージョンに含まれており、さらに多くの機能が今後も追加されていきます。 始めましょう "闇を恐れていないか?" ピッチブラック、映画『リディック』より World Creatorを起動するには、まず、World Creator Launcherアプリケーションをダウンロードしてインストールしている必要があります。World Creator Launcherアプリケーションは、Webサイトの Download にあります。 購入後24時間以内にログイン資格情報を受け取ったら、LauncherからサインインしてWorld Creatorをインストールする事が出来ます。インストールが完了すると、World Creatorの起動が可能です。 アクティベーション上の理由、および適用する追加のアップデートおよびパッチのために、アクティブなインターネット接続が1回以上必要です。 また、他のユーザーとあなたのログイン情報を共有しないで下さい。他のユーザーと共有する事で、他のユーザーがあなたのログイン/アカウントで行う措置に対して、法律によって責任を負う事になります。 コントロールとユーザ入力 アクション キーボード/マウス カメラ移動 W、A、S、D カメラの平行移動 Q、E カメラの移動速度アップ [Left shift]+W、A、S、D、Q、E ズーム マウスホイール クイックズーム 地形をマウス右ボタンでダブルクリック 見回す マウス右ボタンを押したままカーソルを移動 フォーカスエリアを選択 G マネキンを配置 [H]+地形をクリック 地形をフォーカス F カメラ位置を保存 [Left Ctrl]+0から9 カメラ位置を復元 [Left Alt]+0から9 ヒートマップ表示の切り替え F1(ヒートマップとは、マトリクスに含まれる個々の値を色で表されるデータのグラフ表示) 測定ツール表示の切り替え F2 コンパス表示の切り替え F3 ワイヤーフレーム表示の切り替え F4 フィルター表示の切り替え F5 テクスチャ表示の切り替え F6 オブジェクト表示の切り替え F7 ディティール表示の切り替え F8 VRモード表示の切り替え F9 フルスクリーン表示の切替 F10 スクリーンショット F11 スーパーサイズのスクリーンショット F12 入門 World Creatorを起動すると、下の画像のようなメインエディタウィンドウが表示されます。 World Creatorのユーザーインターフェイスは、理解しやすく、整理されており、単純です。これは最高のワークフロー体験を実現するように設計されているので、非常に直感的である事に気づくでしょう。 左側にツールバーがあり、すぐにアクセス出来るようにいくつかのアクションボタンがあります(保存、読込、新規作成など)。 右側には、地形作成および編集するためのすべてのツールを含むプロパティパネルがあります。 ツールバー New Project(新規プロジェクト) 新規で空のプロジェクトを作成します。 Load Project(プロジェクトを読込) 既存のプロジェクトを読込みます。 Save Project(プロジェクトを保存) 現在のプロジェクトを保存します。 Save As(別名保存) 現在のプロジェクトを別名で保存します。 Sync-Tool Export(SYNC Toolをエクスポート) 現在の地形を、UnityとUnreal SYNC Toolプラグインで使用されるWorld Creator固有のフォーマットにエクスポートして、現在の地形をワークスペースに再生成します。テクスチャ、オブジェクト、ディティールと共に、両方のエンジンの地形をインポートするのに役立ちます。 Toggle Heatmap 特定の操作(フィルタ、テクスチャ、オブジェクト、ディティールなど)の影響を受ける地形のエリアを表示する事が出来ます。 Toggle Observe Tool 実際の地形サイズを実現するのに役立つ地形の標高とサイズの情報を追加で表示する事が出来ます。 Toggle Mannequin 地形に人間のようなキャラクターを表示して配置する事が出来ます。これにより、実際の地形サイズを把握するのに役立ちます。また、地形上の2つのポイント間の距離などを測定する事も出来ます。 Toggle Compass あなたが見ている方向を示すコンパスを表示する事が出来ます。これで広大な地面で迷子にならないように役立てます。 Toggle Wireframe ワイヤフレームの切り替えは、地形メッシュの外観(例えば、頂点、ポリゴン、テッセレーション)を表示する事が出来ます。 Toggle Filters フィルタ、テクスチャ、オブジェクト、ディティールなどを個別に有効/無効に切り替える事が出来ます。つまり、現在作業している部分のみを選択する事で、生成プロセスを高速化する事が出来ます。 Toggle Texturing Toggle Objects Toggle Details Take Screenshot 現在のプロジェクトのスクリーンショットを撮ります。 プロパティパネル 右上にすべての主要な設定項目を含むプロパティパネルが表示されます。これは、生成とレンダリング処理全体にとって重要です。 左から、Surface、Texture、Scene、Areas、Post Operations、Export、Optionsのアイコンが並びます。 サーフェスの下にはサーフェス設定があり、サーフェス設定は全体の地形サーフェスの外観を定義するために使用します。このセクションでは、地形サーフェスをデザインするための"Base"と"Filters"の設定にさらに分けられます。 テクスチャの下には、テクスチャに関連するすべての設定があります。テクスチャを手続き型で地形に配布して色付けします。 シーンの下では、生き生きとした環境を創るために使用するシーン関連の設定がすべて見つかります。このセクションではさらに、オブジェクト、ディティール、海洋、天候、空に分けられます。 エリアでは、生物群系の作成、特定のエリアへのテクスチャの適用、特定のエリアでの木とディティールの配布、地形の彫刻など、複数の目的に使用できる特定のエリアを作成する事が出来ます(=マスク処理)。他にもたくさんありますが、World Creatorの真の強力な機能については別のセクションで詳しく説明します。 ポストオペレーションでは、"Simulation Sandbox"などの後処理ツールを使用して、自然な水の流れに基づいた浸食や沈殿物の移送を作成する事が出来ます。ここでは、シミュレーション全体で考慮される多数の異なるパラメータを持つ複数の堆積物サーフェスを設定する事も出来ます。 エクスポートの下には、ハイトマップ、ブレンドマップ、フローマップなど、あらゆる種類の利用可能な情報をWorld Creatorからエクスポート出来るようにする、すべてのエクスポートオプションがあります。 オプションでは、地形の生成や一般的なレンダリングに関連するさらなる設定を調整する事が出来ます。 各セクションをまず初めに確認する事をお勧めします。ほとんどの値は機能上明白でなければなりません。World Creatorはリアルタイムの地形ジェネレータであるため、変更はすべて即座に表示されます。 このマニュアルでは、上記の各セクションを順を追って説明します。World Creatorには、該当する項目に付けられた「?」マークをクリックする事で、統合されたコンテキストベースのドキュメントもあります。 サーフェス設定 "白いウサギを追え" モーフィアス、映画『マトリックス』より 『サーフェス』セクションでは、すべての地形サーフェス関連の設定を表示します。従って、このセクションは地形サーフェスの形状に関与する主な地形ジェネレータとなります。 このセクションでは、BASE(基本)設定とFILTERS(フィルタ)設定のサブセクションとさらに分類分けします Exportを使用すると、地形サーフェスと法線をファイルに出力する事が出来ます。RAW(8,16/32ビット)、R16(16ビット)、R32(32ビット)、PNG(8/16ビット)、JPG(8ビット)、TIFF(16ビット)、TGA(8ビット)、TER(Terragen)、OBJ。 地形の法線は、法線マップとして(PNG、JPG、TGA画像フォーマット)に出力する事が出来ます。 出力時に、X値とY値を反転するか、エンディアン、ビット深度、赤と緑のチャンネルを反転するか、地形を複数のタイルに分割するかなど複数のエクスポート設定を選択する事が出来ます。 "Split"にチェックを入れると、1つのタイルの幅と高さを入力を入力する事が出来ます。World Creatorは、地形全体を指定したサイズのタイルとして出力します。全体のタイルサイズが現在の地形サイズより大きい場合、World Creatorは現在の地形サイズを超える地形の部分の高度値を0に設定します。 基本設定 このサブセクションでは、基本的な地形サーフェスを作成するための設定ツールが用意されています。このサーフェスは、さらなる地形の変更を目的とした初期の高度値を作成します。このセクション内の変更によって初期値は変更され、地形サーフェスに関するそれ以外のものにも反映される事を認識する必要があります。 Fractal Generator Prorerties Seed Seed値は、特定のアルゴリズムによって無作為に作成されたランダム標高値に基づいた地形形状を作成するWorld Creatorのランダムなジェネレータにより使用される符号付き整数です。Seed番号に対して常に同じ地形が得られるため、前回と同じ地形を求める場合は、前回と同じSeed値を設定して下さい。また、この値を変更すると、まったく新しい地形が作成されます。 [+][-]ボタンはSeed値を増加/減少します。これらを使用して、無限の数が可能な地形を素早く繰り返す事が出来ます。[R]ボタンはランダムなSeed値を作成します。 Area 範囲を設定する事で、World Creatorはその境界線を使用して基本図形を作成します。範囲が完全に地形全体をカバーしていない場合、範囲外には何も作成されないためこれらの領域は完全な平坦になります。この設定値ははさらに、マスクとして使用する"Blend Map"を備えています。そのため長方形の範囲をカバーするだけでなく、その範囲の内側で、"Blend Map"を使用して、関連付ける位置を正確に指定する事も出来ます。これについては別のセクションで詳しく解説します。 Terrain Size (単位 メートル) Size Locked チェックする事で縦横比1 1を固定します。チェックを外す事で縦横比の自由な地形を作成する事が出来ます。 Terrain Width 地形の横幅のサイズを設定します。 Terrain Length 地形の長さのサイズを設定します。 Terrain Height Range 地形の最低/最高高度を設定します。定された範囲内で無作為に作成された標高値を生成します。これは地形の表面に視覚的に見られる明白な最低/最高の高度が、設定した高度範囲に対して定義された値とは一致していません。 Precision (単位 メートル) Precision この設定した単位を基に、地形の幅と長さの精度をメートル単位で調整します。精度が高いほど解像度は高く見栄えが良くなりますが、処理効率に影響を与える大量のメモリ量を必要とします。 Resolution 「Precision(精度)」で設定した単位当たりのピクセル数を表示します。高精細な単位を設定すると(1/4m以上)、"Current terrain size with specified precision is not supported in realtime mode.Highest possible precision will bu used.(指定された精度の現在の地形サイズは、リアルタイムモードでは対応しません。可能な限り高精度を使用しています。)"とメッセージが表示されます。 Soil Properties Soil チェック時、地形の最低高度に対して土壌の深さ(厚み)を調整する事が出来ます。 Depth 土壌の深さを設定します。 Custom Base Shape Properties Custom Base Shape チェック時、[Edit Shape]を押す事で、地形上に現れる浮遊球のいずれかをドラッグして、地形の任意のエリアの高度値を手動で調整する事が出来ます。 さらに、1つ、あるいは複数の浮遊球を選択するために使用が可能な3つの選択ツールがあり、地形サーフェスを素早く調整する事が出来ます。 Single 浮遊球を一つ選択する事が出来ます。 Circle Radiusで選択範囲の円型の半径を設定し、Fall-offで選択範囲の境界を減退させる量(最大数は1)を設定します。下記画像のようにFall-off値を大きくすると選択された浮遊球の色はグラデーションがかかり、その部分の作用力は減退しています。 Rectangre Width、Lengthで選択する長方形の幅と長さを設定し、それぞれの辺のFall-offで選択範囲の境界を減退させる量(最大数は1)を設定します。 各選択ツールには4つの異なるアクションもあります Move Up / Down 浮遊球をマウスでドラッグし、上/下に移動する事で、ドラッグした浮遊球に沿って地形が上下に隆起/沈下します。 Average 選択した浮遊球の範囲を中心に、周囲の平均レベルを均すが出来ます。この場合、中心の高度に変化は無く、周囲の地形が隆起、沈下します。Singleの選択での平均化は出来ません。 Flatten 選択した浮遊球の範囲を中心に、Flatten Heightの高度まで選択した浮遊球に沿って地形を平坦化する事が出来ます。Singleの選択での平坦化は出来ません。 Noise 選択した浮遊球に沿って地形を上下に隆起/沈下させる時にいくつかのノイズを付加します。Move Up / Downだけでは伸びた地形が滑らかになるのが好みでない場合に役立つかも知れません。 FLATTEN ENTIRE TERRAIN 地形全体をゼロ高度に瞬時に平坦化し、一から独自の形状を作成する事が出来ます。 Reset Control Points 編集する前の元の地形に戻す事が出来ます。 プロパティバーの[Reset to default]ボタンをクリックすると、編集前の地形に戻す事が出来ますが、現在編集中の地形は失います。[Edit Done Shape]をクリックする事で変更を確定します。 "Level Strength Step (1-10)"を0に減らして、Step 1( 「Fractal Noise Level Step Per Strength」の項目で見つける事が出来ます)から始める事で、選択可能な浮遊球の数を増やす事が出来ます。 これはWorld Creator内のデザインツールの1つです。さらに多くのツールが用意されており、必要な地形サーフェスを作成するためのさらに多くの設計機能を提供します。 Seamless Seamless チェック時、World Creatorは地形をシームレスな地形に変換します。つまり、視覚的に目に見える繋ぎ目を出さずにx軸とz軸に沿って地形を繰り返し並べて事が出来ます。 [Border Blend Range]スライダを使用して、エッジに沿ってブレンドを調整する事が出来ます。 Fractal Noise Properties Fractal Noiseは、常に生成プロセス全体の最初のフィルタであるベースシェイプフィルタの初期値をコントロールします。このフィルタは、最初に見る事になるベース地形を作成するために使用します。つまり、ここで実行するすべての変更は、これまでの全体の生成プロセスにも影響します。 Noise Height Range "Noise Height Range"は、指定された範囲内でランダムに作成された標高値を生成するようにWorld Creatorに指示します。これにより明確な最低-最高高度が地形の表面上に視覚的に見られるのは、"Noise Height Range"で定義された値と正確に等しい事を意味しません。 『World Creator』のプラグインは、Unity Editorの【Windows】メニュー上にあります。これにより、新しい地形を作成したり、既存の地形を編集する事の出来るWorld Creatorウインドウが開きます。このドキュメントで、いくつかの追加機能を詳しく説明します。 Newボタンは、新しい地形を作成します。1つのシーンの中に複数の地形を作成し、管理する事が出来ます。Load Presetタブは、XMLデータファイルとして保存されている既存の地形プリセットを読み込む事が出来ます。地形をプリセットとして保存する事も出来ます。プリセットの詳細は後で説明します。プリセットを読み込むと、地形が自動的に生成されます。Importによって、画像(PNG/JPG)またはRAWファイル(8/16ビット)形式のハイトマップを使用して自動的に生成されたUnity地形を使用する事が出来ます。『World Creator』で編集するには、World Creatorウインドウ内で『World Creator』で作成された既存のUnityのインプット地形として設定する必要があります。後の"Input Terrain"の項目を参照して下さい。 作成された地形アセットに加えて、『World Creator』は、『World Creator』によって作成された地形のすべての設定を保存するために使用されるXMLデータファイルも添付します。このファイルは、一時的に保存する際にも使用されます。変更するすべての設定は、このファイル内に保存されます。このため、『World Creator』で作成された各地形オブジェクトには、ファイルパスの場所を格納するためのスクリプトが添付されています。そのスクリプトを移動させたり削除しないで下さい。そうしないと地形設定が失われます。このスクリプトは、ゲームモード中にはまったく影響を与えません。 『World Creator』で作成した各地形は、ネイティブのUnity地形として、Unity地形ツールや他のエディタ拡張を使用して修正する事が出来ます! World Creatorウィンドウ内の地形設定を編集する前に、階層リスト内の地形を選択する必要があります。World Creatorタブの一番下には[Generate]ボタンがあります。[Generate]ボタンをクリックすると生成プロセスが開始され、選択した地形設定に応じて地形が変わります。 段階的に各設定を見て回りましょう。ここでは、World CreatorタブのWorld Creatorメニューから始めます。 地形を完全に削除する場合は、[Delete]ボタンを使用して下さい。 地形アセットと付属するXMLデータファイルと共に地形オブジェクトが削除されます。 Save Presetでプリセットを保存すると、地形設定は任意のファイルに保存する事が出来ます。後で設定を変更すると、一時的にXMLデータファイルが上書きされます。地形の設定変更中には、以前に保存したプリセットファイルが上書きされる事はありません。 地形を複数のタイルに分割するには、Splitボタンを使用します。タイルスライスは、スライスボタンをクリックした後に開く別のウィンドウで定義する事が出来ます。地形をよりスマートな領域(タイル)に分割する事は、ランタイム中に単一のタイルをストリームしてメモリの帯域幅を削減し、ゲームのパフォーマンスを向上させる事を可能にするので重要です。これは、ランタイム中に同時にレンダリング出来ない非常に大きな地形がある場合に必要です。 Exportを使用すると、RAW(8/16ビット)、PNG、JPG、およびOBJファイルとして地形のハイトマップを保存する事が出来ます。これらのフォーマットでは、ハイトマップを3DS Max、Maya、Blender、Cinema 4D、Mud Box、Terragen、Vueなどの他のアプリケーションにインポートする事が出来ます。さらに、他のゲームエンジン(Unreal Engine等)でも、あなたのハイトマップをインポートする事が出来ます。 メニューの下に、生成プロセス全体で重要となる操作可能なメイン設定の選択肢を示すツールバーが表示されます。 Generalでは、ハイトマップの解像度、マテリアル、マスク、地形フィルタなど、全般の一般的な地形設定が表示されます。 Texturingでは、テクスチャマップ、タイルサイズ、分布設定などのテクスチャ関連のすべての設定が表示されます。 Objectsでは、ツリー、ディティール、ディティールメッシュ、およびメッシュの配置とすべての分布設定が表示されます。これらの各ボタンには、それぞれのオブジェクトの設定オプションを含んでいます。 Postでは、道路や河川を作成したり、特定の場所で地形を平坦化する(建物を配置するのに適しています)など、さまざまな地形配置操作を実行する事が出来ます。 Aboutは、バージョン番号、エディション、World Creatorのウェブサイトへのリンク、ソーシャルサイト、パートナーなどの会社および製品関連の情報を表示します。 一般設定 Generalボタンには、すべての地形生成のための設定が表示されます。そのため、この項では、テクスチャリングも配置もなく、純粋なプロシージャル地形生成のみを主とした地形ジェネレータとなります。 CPU vs. GPU 下の画像は、シード値を除いて地形オブジェクトに依存しないいくつかの全体を通した設定を示しています。 DirectX 11対応のグラフィックカードを搭載したWindows PCで『World Creator』を実行している場合は、Use GPUオプションを選択して下さい。これにより、CPUより数倍高速なGPUを使用した地形生成が可能になります。 Mac/OSXでは、"Compute Shader"サポートがUnity Engineに統合されている場合にのみ、GPUアクセラレーションを使用する事が出来ます。 GPU地形の生成は、『World Creator』Professionalバージョンのみサポートしています。(WindowsとDirectX11対応のグラフィックスカードが必要となります) リアルタイム・ジェネレーション Realtime Generationのチェックボックスが有効になっている場合、設定の種類を変更するたびに World Creatorウィンドウ内で、地形は自動的にリアルタイムで適応します。ただし、このオプションはGPU地形生成が可能な場合にのみ使用する事が出来ます。 この機能を使用すると、地形の変化を即時に確認できます。これは地形だけに影響するため、テクスチャや植林などのリアルタイムには、現在サポートされていません(現在作業中です)。 シード Seedの値は乱数生成に影響し、任意で設定する事が出来ます。 Generateボタンをクリックするたびに、ランダムに新しい地形を生成したい場合、Random Seedボックスにチェックして下さい。 タイル作成 この機能を使用すると、境界線に沿って組み合わされた複数の地形タイルを作成する事で、非常に大きな風景を作成する事が出来ます。『World Creator』のタイルシステムは、異なる地形タイプ(例えば、バイオメータ生物群系)のタイル)を連結する事が出来るので、他の地形ジェネレーターと大きく異なります。 タイル作成システムの設定は以下のウインドウに表示されます、 地形をタイル可能な地形タイルと定義したい場合は、Tileableオプションをチェックして下さい。次に、タイルがタイル位置Xとタイル位置Zの値を使用すべき指標を『World Creator』に指示する必要があります。どちらの値も、負の値と正の値を入力する事が出来ます。Auto Align(自動調整)オプションを確認して下さい。『World Creator』は、入力した指標に応じて自動的にタイルの位置を変更します。 Border Blendingは、各地形タイル間のブレンド調整に使用する事が出来ます。値が大きいほど、よりタイルが境界線に沿って適合ようになります。値がより小さければ、境界はより不適合になります。 『World Creator』の各タイルは単一の地形インスタンスとして扱われます。これは、地形タイル全体にバイオメータを作成する事が出来るようにするためです。さらに、各タイルの設計においても柔軟性があります。欠点は、各タイルのテクスチャとオブジェクトを個別に設定する必要がある事です。これにはCopy TexturesとCopy Objectsボタンを使用します。クリックすると、別のWorld Creator地形をクリックして、テクスチャやオブジェクト設定をコピーする事が出来ます。 タイルを使用する場合は、以下の設定をすべてのタイルで同一にして下さい Seed(シード) Heightmap Resolution(ハイトマップの解像度) Terrain Real Width and Terrain Real Height(地形の実際の幅と高さ) General Strength value of the Basic Filter(基本フィルタの一般的な強度値) Pixel Error(ピクセル誤差) これらが同一でない場合、境界が正しく適合しません。そのため境界が適合しない時は、必ず上記の値を確認して下さい! 『World Creator』のタイル作成システムは、各タイルの取り込み地形データも処理する事が出来ます。取り込み地形を使用する場合は、地形が適切に見えるようになるまで、Border Blending値を増やして確認して下さい。 左側の地形タイルはオリンパス山の取り込み地形(テクスチャ)を示し、右側の地形タイルはピュージェット湾の取り込み地形(テクスチャ)を示しています。両方ともいくつかのフィルタで改善されています。 『World Creator』のStandardバージョンは、各方向に合計3マスのタイル数に制限されています(例えばXからZに沿って-3から3まで)。 環境設定-太陽と海面水位 『World Creator』は、Sun(太陽)とMean Sea Level[MSL](海面水位)に依存する地形の生成、テクスチャリング、オブジェクト配置をサポートしています。 このフィールドを有効にするには、Sunフィールドの"Light(照明)"とSea Planeフィールドの"Game Object"をドラッグ&ドロップするだけです。海面オブジェクトを持っていない場合は、Mean Sea Level(MSL)スライダを使用して希望の海面を調整する事も可能です。 両方のフィールドが設定されている場合、特定の地形の生成、テクスチャリング、配置に使用する事が出来ます。例えば、MSLの下の地形の特定のタイプ、MSLの上の地形の別のタイプ、または太陽に直面していない地形のエリアのテクスチャを、そのエリアとは異なるテクスチャにする事が出来ます。 解像度、サイズ、クオリティ 以下の設定は、生成される地形の解像度、サイズ、およびクオリティに影響します。 Heightmap Resolutionは、地形の実際の解像度を設定します。解像度が高いほど、地形を表現するために使用する頂点が多くなり、それに応じて視覚的クオリティが向上します。より高い解像度を選択すると、より多くのデータを処理する必要があるため、地形生成時間が長くなり、CPUやGPUの負荷が高くなる事に注意して下さい。 『World Creator』のStandardバージョンは、最大解像度4096×4096に制限されています。Professionalバージョンは最大解像度8192×8192をサポートします。 Controlmap Resolutionは、地形のテクスチャリングに重要な役割を果たします。異なる地形テクスチャのブレンドをコントロールします。解像度が高いほどブレンドはシャープになりますが、地形をテクスチャリングしている間の生成プロセスも長くなります。 Controlmap Resolution 512 Controlmap Resolution 1024 Detailmap Resolutionは、草や花などのディティールを配置する時に重要です。解像度が高くなるとディティールはより小さく、より多くの継ぎ目を結果として生じますが、ディティールを配置する時に生成プロセスはより長くなります。 Detailmap Resolution 512 Detailmap Resolution 1024 Basemap Resolutionは、Basemap Distanceより大きな距離から見た地形に使用される合成テクスチャの解像度を表します。 Fixed Size Ratio(固定サイズ比)が設定されていると、Terrain Real Width(実際の地形幅)とTerrain Real Height(実際の地形の高さ)の比率は等しく保たれます。幅と高さに異なる値を設定する場合は、チェックマークを外します。どちらの値もUnity単位を参照します。Terrain Real Widthと{Terrain Real Height}の値を1000×208に設定すると、生成される地形オブジェクトの幅と長さは同様に幅の長さ1000、最大高度208になります。 Pixel Errorは、地形マップ(ハイトマップ、テクスチャなど)と生成された地形との間のマッピングの精度を示します。値が大きいほど精度は低くなりますが、レンダリングの処理時間を低く抑えます。 Pixel Error 1 Pixel Error 15 Cast Shadowsは、地形が影を落とすかどうかを示します。影で覆う時に、人工物を防ぐためにカメラ(さらに照明設定のバイアス)の近/遠面についての追加調整が必要であることを覚えておいて下さい。 Basemap Distanceは、地形のテクスチャが最大解像度で表示される最大距離を決定します。この距離を越えると、効率化のためにより低い解像度の合成画像が使用さます。 Detail Distanceは、カメラからディテールを抜粋するための距離を決定します。 Detail Densityは、指定された空間単位のディティールオブジェクトの数を決定します。この値は、レンダリングの処理時間を減らすために低く設定する事が出来ます。 マテリアル このMaterialは地形の外観に影響します。Unity Creatorは、Unity標準地形マテリアルに加えて、有名な『Relief Terrain Pack(RTP)』と『Distingoシェーダ』のアセットパッケージもサポートしています。 以下のマテリアルから選択する事が出来ます Unity Built-in Standard(Unityビルドインのスタンダード) Unity Built-in Legacy Diffuse(Unityビルドインの旧シェーダーコードのDiffuse) Unity Built-in Legacy Specular(Unityビルドインの旧シェーダーコードのSpecular) Gradient(グラデーション) Distingoシェーダ Relief Terrain Pack Custom(カスタム) Gradient materialは地形高度に応じて、地形を着色します。 Gradient Height Visualization Custom Gradient カスタム地形マテリアルを使用する場合は、Customを選択し、マテリアルをCustom Materialフィールドにドラッグ&ドロップして下さい。 取り込み地形 Input Terrain機能を使用すると、基本形状を変更せずに『World Creator』フィルタを使用して既存のUnity地形を強化する事が出来ます。 Existing Terrain – Enhanced Terrain Ridged Existing Terrain – Enhanced Terrain Terrace また、非常に優れたアプリケーションとして、既存のハイトマップをインポートし、特定の『World Creator』フィルターで拡張する事が出来る事です(下のグランド・キャニオンは、『World Creator』のキャニオン・フィルタで拡張されています)。 インポートした512ハイトマップ Canyon Filterで拡張された1024ハイトマップ ご覧のように、高解像度の生成時にデータの損失や画質の低下を招く事なくグランドキャニオンの低解像度ハイマップをインポートして使用しました。それだけでなく、この新しい機能で強化されていながらも基本的な形状は維持されています。 無限の可能性のあるアプリケーションでありながら、扱いは簡単です Input Terrainで、拡張したい地形を取り込むだけです! Input Terrain Typeは、設定する取り込み地形のタイプを選択する事が出来ます。選択した取り込み地形タイプに応じて、Unity Terrainやテクスチャを取り込み地形(ドラッグ&ドロップを使用)として使用する事が出来ます。タイプでテクスチャを選択する時は、グレースケールテクスチャのハイトマップを適用する必要があります。これらの画像は、通常、チャネルあたり8ビットをエンコードするため、地形は低いビットレートによる目立つ階段状ようなの効果が生じる事があります。『World Creator』の16ビット入力値に対応させるためには、画像の代わりにUnity地形オブジェクトを使用します。これは最適の結果をもたらします。 Select Operationでは、生成時に使用する数値演算を選択します。Addition(加算)、Subtraction(減算)、Inverse Subtraction(逆算)、Average(平均)、Difference(差異)の中から選択する事が出来ます。 Average Subtract Strengthは、取り込み地形が地形フィルタと生成プロセスに影響を与える強度を示します。値が大きいほど、取り込み地形の形状を保つ効果に強く影響します。 Strenght 0% – Full Basic Strenght 25% - 75% Basic, 25% Input Terrain Strenght 50% - 50% Basic, 50% Input Terrain Strenght 75% - 25% Basic, 75% Input Terrain Strenght 100% - Full Input Terrain Level Strengthsは、生成ステップごとの解像度の強さに直接影響を与え、地形の細かさや形状に大きな影響を与えます。ハイトマップの解像度512を選択すると、各地形フィルタに対して9つの生成ステップを実行する必要があります。解像度が高いほど、より多くの生成ステップが必要となります。 生成ステップは、2の累乗で始まり、2の累乗(2、4、8、16、32、64など)の解像度で始まります。 ベース値を変更すると、異なる地形タイプが発生する可能性があります。その可能性は正に無制限です(下の2つの画像を参照)。 Level Strengthsを使用し、地形のより広いエリアを作成する事も出来ます。それは、Level Strength 8の値を0に設定するだけです。これにより、設定前の4倍大きくなります。 左が小さいエリア、右が"Level Strength 8"を0に設定した広いエリア Level Strengthsの値は、特定の解像度レベルでのノイズ強度もコントロールします。より高いレベルでノイズを除去するには、Level Strengths(たとえば、解像度レベルごとのスムージング化)を下げる必要があります 標準 Level Strength 4096を0に設定 Level Strength 2048を0に設定 地形マスクと地形フィルター 『GeoControl』ではお馴染みのレイヤーベースのフィルターシステムは、『World Creator』ではメインとして改良して適応されています。 基本的には、地形に直接影響を与える全てのモディファイアは、Terrain Filters(地形フィルタ)と呼ばれ、互いに結合され、Terrain Masks(地形マスク)にグループ化されます。河川や湖を作成したり、侵食や堆積を適用するために使用されているかどうかに関わらず、地形モディファイアをフィルタと称します。この点が、『GeoControl / World Creator 1』とはまったく異なるものです。以前のバージョンでは、前後のフィルタに違いを生じされるため、機能が制限されていました。 Terrain Masksは『World Creator』にとっても新しいものです。主に、それらは単一の地形マップ上に異なる地形タイプを作成するために使用されます。これは他のプロシージャル地形やランドスケープジェネレータと比較して独特の機能です。 地形マスクを使用すると、砂漠、峡谷、段丘、その他の全てのタイプの地形をマップに適用する事が出来ます。同じマスクをテクスチャリングや植樹などのランドスケープ生成に使用する事が出来ます。 複数の地形タイプをミックスさせたサンプル画像 Add Maskを使用すると、新しいマスクが作成され、マスクのリストに追加されます。マスク処理を示す適切なマスク名(例:キャニオンエリア)を設定する事をお勧めします。マスクに関する最も重要な部分は、影響を受けたエリアを識別するために使用されるTextureプロパティです。読み取り可能なテクスチャを適用して下さい(全てのマスクに適用されます。Unityのドキュメントを参照)。また、グレースケール画像でなければなりません。グレースケール強度が高い(例えば、輝度100%の白)ほど、より多くの地形フィルタがマスクの影響を受けます。 トップレベルのマスク(リストの最初のマスク)にマスクテクスチャを適用する場合、マスクテクスチャの黒い部分は、それ以上のフィルタに影響せずに平坦な地形を結果として生じる場合がある事に留意下さい。これは、基本フィルタが乱数値を作成しないためです。 Weightプロパティは、マスクによって定義した指定位置で、地形の生成にマスクがどの程度強く影響するかを示します。 Height Multiplicatorを使用して、マスクによって定義した指定位置で、地形の高さを調整します。 Click To Edit Mask(マスク編集をクリック)ボタンによって、マスクに直接ペイントする事が出来ます。 ブラシはグレースケールの画像で、『World Creato』のインストール時にデフォルトの、"World Creator/Resources/Brushes "フォルダにブラシセットが格納されています。自作のブラシは、いつでもそのフォルダにコピーする事で追加する事が出来ます。『World Creator』は自動でそれらをリスト表示します。 Brush Sizeは、元の画像サイズのパーセンタイル値です。Brush rotationは、地形を描いている間の回転運動を表します。Brush Strengthは、ペイント中にブラシがどの程度強く適用されるかを示します。 ペイントが終了したら、Click to Apply Mask(マスクの適用)ボタンを使用します。Generate(または、リアルタイムモードではConfirm)ボタンを押す事も出来ます。 Add Terrain Filterボタンをクリックすると、利用可能な全ての地形フィルタから選択出来る新しいウィンドウが開きます。アセットストア内で新しい地形フィルタパックを購入する事により、いつでも地形フィルタのリストを拡張する事が出来ます。ダウンロードしたフィルタパックのDLLファイルを、World Creatorアセットディレクトリのフィルタフォルダに配置して下さい。(例 /World Creater 2.3/Assets/WorldCreator/Filters) Resetを押すと、選択したフィルタのプロパティがデフォルト値に戻ります。Reset Allを選択すると、現在のフィルタがすべてデフォルト値に戻ります。 DownとUpボタンを使用すると、フィルタリスト内で選択したマスク/フィルタの順序を変更する事が出来ます。Removeをクリックすると、選択したマスク/フィルタがフィルタリストから削除されます。Clear Allを選択すると、トップレベルの地形マスクと基本フィルタを除いて、全てのマスク/フィルタがフィルタリストから削除されます。 地形生成プロセスの段階的な実行は、最初からさ最後までマスク毎、フィルタ毎に行われます。異なる順序は異なる地形を生じさせます。 Terrain Masksは『World Creator』のProfessionalバージョンでのみ使用する事が出来ます! 各Terrain Filterは、地形の生成にフィルタがどのように影響するかを修正するために調整出来る独自のプロパティを備えています。基本フィルタを除いて、全ての地形フィルタには以下の非常に重要な設定があります Enabledによって、フィルタをアクティブ/非アクティブに切り替える事が出来ます。有効にすると、地形フィルタが生成プロセスで使用されます。そうでない場合、地形生成を通して効果がありません。 選択されたMean Sea Levelオプションは、『World Creator』が上記の環境設定で設定された海面値またはMLS値を使用するかだけでなく、どの手順で行うかを決定します。Unused(例えばBelow(以下)またはAbove(以上)下または上)以外のオプションを選択すると、生成中に環境設定が測定されます。地形高度の最小範囲と最大範囲は、選択された"Mean Sea Level"オプションに従って設定されます。 Terrain Height値(0と1の範囲で標準化された値)は、選択したフィルタで考慮する地形の高度の範囲を指定する事が出来ます。それは、地形フィルタはこの範囲内の地形の生成にのみ影響する事を意味します。 地形高度依存型の地形フィルタサンプル Smooth Height StartとSmooth Height End値を使用して、最低値と最高値の地形をフィルタ効果で柔らかく、または迅速にブレンドするよう調整します。 Terrain HeightとSmooth Height Start / Smooth Height Endに加えて、Terrain SlopeとSmooth Slope Start / Smooth Slope Endを考慮に入れるオプションも備えています。選択したフィルタは、指定された地形の傾斜範囲(度)内でのみ適用されます。 地形斜面依存型の地形フィルタサンプル テクスチャリング 『World Creator』の最新バージョンでは、さまざまな基準に従って地形をテクスチャするための新しいオプションが導入されました。 新しいテクスチャを追加するには、アセットフォルダ内で選択したテクスチャを選択し、Add per Drag'n Dropというフィールドにドラッグ&ドロップします。 DownとUpを使って、選択したテクスチャのレイヤー(または優先度)を(左から右へ順番に)変更する事が出来ます。『World Creator』はレイヤーベースのテクスチャ技術を使用しています。つまり、優先度の高いテクスチャは優先度の低い別のテクスチャと完全に重なり合います。そのため、明示的にその結果を求めない限り、それらの配布設定のための重複させるテクスチャは一緒にブレンドされません。これは美しくブレンドされたテクスチャと最適な結果につながります。 Swapを使用すると、2つのテクスチャの位置のみを切り替える事が出来ます。それらに関連付けられた他のテクスチャと配布設定を切り替える必要はありません。 Duplicateを使用すると、現在選択されているテクスチャのコピーをそのテクスチャと配布設定と共に作成する事が出来ます。 Removeは、リストから選択したテクスチャを削除し、Clear Allは、全てのテクスチャをリストから削除します。 Export Global Color Mapは、基本的な地形の色付け用として、他のアプリケーションでインポートして利用出来るPNG画像ファイルを作成します。カラーマップは、現在の設定で適用されているテクスチャに基づき ます。 Export Splat Map(s)は、特定のテクスチャのレッド、グリーン、ブルー、アルファチャネルの配布情報を含むPNG画像ファイルを作成します。 テクスチャリングはさらに以下に分類されます テクスチャ設定 配布設定 テクスチャ設定 ここでは、タイルサイズ、タイルオフセット、メタリック値などの特定のマテリアル設定と同様に選択したテクスチャの拡散および法線マップを編集する事が出来ます。 すでに適用されているテクスチャを変更するには、選択した別のテクスチャをassetsフォルダから適切なフィールドにドラッグ&ドロップします(下の画像を参照)。 選択したマテリアルによって、一部の設定が表示される場合と表示されない場合があります。 Lock Size To Dimensionがチェックされている場合、テクスチャ画像の寸法は、タイリングなしで地形の寸法にマッピングされます(グローバルカラーマップに有用)。 Tile Sizeは、テクスチャマッピング中に使用されるタイルのサイズを決定します。この値が大きい程、マッピングされるテクスチャ画像は地形面積に比べて大きくなります。 Metallicの値を使用すると、サーフェス全体のマイクロ・サーフェスのディティールや滑らかさをコントロールする事が出来ます(Unityドキュメントを参照)。 Tile Offset XとTile Offset Yは、テクスチャの位置をオフセットする事が出来ます。 『Relief Terrain Pack』マテリアルを選択した場合、これのサイズ、タイルオフセット、メタリックの設定は、RTPスクリプトコンポーネントを使用して調整する必要があります。法線マップも同様です! 配布設定
https://w.atwiki.jp/lslwiki/pages/252.html
llPushObject llPushObject(key id, vector impulse, vector angular_impulse, integer local) 機能概略 サンプル Tips 詳細な説明 History 来客数: - 選択肢 投票 役に立った (1) 役立たずだった (1) 名前 コメント