« 2019年5月 | トップページ | 2019年7月 »

2019年6月の記事

VRMの電柱って物足りなくない?って話

電信柱

赤い部分とかにも電線が張ってあるんじゃない?

今の架線ツールでそんなに細かく線張れって言われたら,そりゃですけど。

| | コメント (2)

[Python] リスト型をベクトルに見立てて計算したい

いろいろ試していますがVRMNXpyで一向にnumpyが使えません。いい加減やってられないので,リスト型をベクトルに見立てて線形代数の主要な計算ができるコードを用意しました。

vrmapiの命令で使うことが前提なので,クラスを作って演算子をオーバーライドとかは一切せず,リスト型を放り込んでリスト型を返す関数に仕立てました。

def vecdot(vec1, vec2):
    # 内積(スカラー)を返す
    p = 0.0
    for i, j in zip(vec1, vec2):
        p += i*j
    return p

def vectrans(matrixA, vecx):
    # 線形変換 Ax
    vecy = []
    for k in range(len(vecx)):
        vecy.append(vecdot(matrixA[k], vecx))
    return vecy

def turnmatrix(matrixA):
    # 行列の転置
    m = len(matrixA)
    n = len(matrixA[0])
    return [[matrixA[i][j] for i in range(m)] for j in range(n)]

def matrixproduct(matrixA, matrixB):
    # 行列の積
    return [vectrans(turnmatrix(matrixB), ai) for ai in matrixA]

 

本来はベクトル計算は,ベクトルの次元が合っているかとか確認しなきゃいけないのですが,あえてそれもしていません。変な行列やベクトルを放り込んだらfor文のあたりでIndexErrorが出るはず。いろいろ雑ですがVRMNXpyで使いそうなベクトル計算はせいぜい3次元なので…。

>>> A = [[1,2],[3,4]]
>>> B = [[5,6],[7,8]]
>>> x = [1,2]
>>> y = [2,2]
>>> vecdot(x,y)
6.0
>>> vectrans(A,x)
[5.0, 11.0]
>>> turnmatrix(A)
[[1, 3], [2, 4]]
>>> matrixproduct(A,B)
[[19.0, 22.0], [43.0, 50.0]]

サンプルは2次元ですが3次元もいけます。

| | コメント (0)

撮る夫くんNX 追尾機能+α

先日,暫定版で公開した「撮る夫くんNX」の機能強化を進めています。

Toruo302a

追尾機能の原型ができました。ビュワーのGUIでリアルタイムに追尾対象の編成・車両を選択できます。先頭車・最後尾だけでなく,中間車の追尾も可能なのは,撮る夫くんならではの機能です。

NX版の撮る夫くんは追尾中もブルブル手ブレします。(しかし分かりにくい)

追尾中のオートフォーカスの実装も計画しています。

Toruo302b

撮影ポイントを保存する機能も追加しました。外部ファイルにカメラ座標を保存する仕組みにしましたので,次にレイアウトを起動したときにも簡単に元の撮影ポイントに移動できます。FOVや被写界深度の状況も復帰します。

ほかにも撮る夫くんにできることがないか,模索中です。


ImGuiはなかなかに触り甲斐のある機能です。バージョン5と違ってなんでもかんでもキー操作で実装しなくていいので高機能化に拍車がかかります。(GUIウィンドウを開くのはどうしてもキー操作になります。センサーでも使わない限り。)

毎フレームの処理量が増えすぎないようにコードをうまく仕上げるのが難しいです。

| | コメント (0)

撮る夫くんNX Ver. 3.0.1 β

こちらは撮る夫くん旧バージョンのリリース記事になります。撮る夫くんの最新版(Ver. 3.0.3)はこちらからどうぞ。

以前からVRM5向けに公開していた「フライスルーカメラ撮る夫くん」を,VRMNX向けに移植しました。

撮る夫くんNXの機能

  • 手ブレ機能
  • 被写界深度の簡単スライダー操作
  • ズーム&首振りの同時操作
  • 車両追尾機能(実装中)

カメラ自体の移動はテンキーを使う方法に改めました。車両追尾はまだ出来ていないので次回バージョンで搭載します。

被写界深度は,一眼レフカメラのレンズ機構をシミュレーションしてシンプルに操作できるようになっています。

ダウンロード&組み込みガイド

ダウンロード - toruo_v3.0.1.zip (709KB)公開終了

撮る夫くんのモジュールとサンプルレイアウトを同梱しています。お手元のPCの適当なフォルダに解凍してください。サンプルレイアウトは不親切なことにTOMIXレールと205系山手線が必要です。

ご自分のレイアウトに撮る夫くんを組み込む際は,toruo.pyをレイアウトファイルと同じフォルダにコピーして,レイアウトスクリプトに次のコードを2行,書き足してください。

import vrmapi
import toruo
def vrmevent(obj,ev,param):
    toruo.activate(obj,ev,param)
    if ev == 'init':
        #以下省略

例によってインデントは半角スペース4つ分です。toruo.activate(obj,ev,param) はif文の中に入れないでください。

続きを読む "撮る夫くんNX Ver. 3.0.1 β"

| | コメント (0)

« 2019年5月 | トップページ | 2019年7月 »