« 2015年12月 | トップページ | 2016年9月 »

2016年1月の記事

面取りの話

鉄道車両の形は、ざっくり言えば直方体ですが、各辺や頂点に注目すると、隅が丸めてあります。面を取っているのではなく隅を取っているんじゃなかろうかと個人的には思っていますが、このことを面取り(Beveling)といいます。

Beveling0

この面取りをどのように構成するか困っていた時に、ネット上に整理された文献が乏しかったので、ここにまとめておこうと思います。

一般的に、平面であるポリゴンで丸っこいものを作るには、細かくたくさんのポリゴンに分割するしかないと思うかもしれません。しかし、VRMのようなリアルタイムレンダリングを前提とする場合は計算量を軽減するためできるだけポリゴン数を少なく抑える必要があります。

Beveling0b

ここで、ポリゴンの法線をうまく使う方法を考えます。

続きを読む "面取りの話"

| | コメント (0) | トラックバック (0)

自作車両 進行中

何度か手を付けては挫折している自作車両を、何かに招かれたかのように再び挑戦しています。

製作途中ですが、ためしにUVテクスチャーを貼ってVRMビュワーに置いてみました。

Scr00003

Scr00000

前回(2015年8月)の様子から見たら、かなりの進歩だと思いませんか?思いませんか、そうですか。

制作環境は、mayaを使用しています。やっとmayaの使い方にも慣れてきました。PhotoshopやIllustratorと同様、多彩なことができるソフトというものは、ツールの数が多く一つ一つの役割やできることを把握するのが大変です。VRMレイアウターもそうかもしれませんね。

| | コメント (0) | トラックバック (0)

VRM界隈Twitterまとめ[2015.12]

ぼーっとしていると忘れてしまうTwitterまとめ。2015年12月分です。

年が明けI.MAGICの中の人もゲーム業界に復帰してきたようですのでみなさんも元気出しましょ~。

VRM Tokyo buildingさんもブログか何かをはじめてみてはいかが。勝手に期待しています。

| | コメント (1) | トラックバック (0)

京成AE100型もどきのトラコン遊び

先日自分で撒いたタネをネタとして自分で回収するアレ。

Train Simulator 京急・都営浅草・京急線に出てたので知ったのですが、先代の京成スカイライナー、AE100型にはちょっと変わった定速運転制御が搭載されているそうです。

_dsc0330

下手な写真ですが2010年11月撮影。この時既に後継の2代目AE型も走っていました。

こいつの定速制御は、25km/hのときにP5に入っていると定速スイッチがONになり、定速制御中はP4で速度キープ、P3でブレーキ(P5はふつうに加速)になります。P2以下に戻すと定速スイッチが切れます。

動作している様子はゲームのプレイ動画をご覧になるとよいでしょう。

で、こんな感じの仕様をVRMのトラコンを使ってマネしたものが、次のコードです。編成スクリプトにコピペするとそのまま動きます。

//
// Settings
//
SetNotch 5 8

SetNotchSpeed 1 1 15
SetNotchSpeed 2 25 43
SetNotchSpeed 3 33 68
SetNotchSpeed 4 40 85
SetNotchSpeed 5 55 120
SetNotchParam -1 25
SetNotchParam -2 25
SetNotchParam -3 25
SetNotchParam -4 25
SetNotchParam -5 25
SetNotchParam -6 25
SetNotchParam -7 25
SetNotchParam -8 100

SetInputMode 1

//
// Setup
//
// Var FlgActive		// Activeで1
Var VarCrtNotch
Var FlgConstCtrl		// 定速制御ONで1

Var EidNotchWatcher

Var EidFcsIn
Var EidFcsOut
SetEventFocusIn MtdFcsIn EidFcsIn
SetEventFocusOut MtdFcsOut EidFcsOut



BeginFunc MtdFcsIn
	SetEventFrameTick this MtdNotchWatcher EidNotchWatcher
EndFunc

BeginFunc MtdFcsOut
	KillEvent EidNotchWatcher
EndFunc

BeginFunc MtdNotchWatcher
	Var a
	GetInputMode a
	if a
		GetCurrentNotch VarCrtNotch
		if> VarCrtNotch 0
			Var crtspd
			GetNotchSpeed VarCrtNotch crtspd a	// 定格は仮
			GetCurrentSpeed crtspd
			ifeq VarCrtNotch 5
				if>= crtspd 25.0
					set FlgConstCtrl 1
					SetNotchParam 4 1
					SetNotchParam 3 50
					SetNotchSpeed 3 24 25
				endif
				SetNotchParam 5 100
			else
				if<= VarCrtNotch 2
					set FlgConstCtrl 0
					SetNotchSpeed 3 33 68	// Settingsのところと同じ値!
				endif
				ifzero FlgConstCtrl
					if> crtspd a	// 現在速度>均衡速度
						SetNotchParam VarCrtNotch 6
					else
						// call this MtdSetAccPrm
						set a 500					// 500なのは、最大5ノッチだから
						div a VarCrtNotch
						SetNotchParam VarCrtNotch a
					endif
				endif
			endif
		endif
		// DEBUG
		DrawVar VarCrtNotch
		GetNotchParam VarCrtNotch a
		DrawVar a
		if FlgConstCtrl
			DrawMessage "定速制御ON"
		else
			DrawMessage "定速制御OFF"
		endif
		DrawMessage ""
	endif
EndFunc

定速制御時のP3ノッチの動作は、減速しすぎる戻しノッチを逆手に取ったかたちです。P4(速度キープ)は、NotchParamを1にしてしまってほとんど速度が動かないように見せかけています。

:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+:;;;:+*+

ちなみに本ブログのVRMスクリプトの表示ですが、IEだとインデントが深すぎて見にくいと思います。ChromeかFirefoxでごらんください。

| | コメント (0) | トラックバック (0)

トラコン謎仕様を解明する(2) 戻しノッチ

前回、トラコンの謎仕様を修正するいくつかのスクリプトを紹介しました。その続きとして今回は、「戻しノッチの減速度が大きすぎる問題」を解決します。

言葉としての都合がいいので「戻しノッチ」という言葉を使いましたが、ふつうに通じる言葉ではないかもしれませんね。技術屋さんが使う時の意味とは異なりますが、ここでは、例えば、

「0km/hから70km/hまで5ノッチで加速した。その後2ノッチに戻した」

というようなときの2ノッチの方を戻しノッチと言っています。このとき、VRMのトラコンは惰性の時よりも明らかに強いブレーキ力がかかったような挙動になっています。

つまりここで問題にしているのは、

「加速側ノッチに入っていて、かつ、そのノッチの均衡速度以上の速度で走っているとき、想定よりも大きな減速力がかかっている」

状態です。VRM5(またはOnline)の環境がある方は試してみてください。

続きを読む "トラコン謎仕様を解明する(2) 戻しノッチ"

| | コメント (0) | トラックバック (0)

« 2015年12月 | トップページ | 2016年9月 »