AKAGI Rails

鉄道模型シミュレーターで遊んでいたはずが、気づいたらPythonなども。

VRMNXpy

イベントのユーザIDを予約します

突然ですが,撮る夫くん と VRMNXの機能拡張パッケージATENXA の内部で使用するため,VRMNXスクリプトで使用するイベントのユーザIDで以下の番号を予約します。 userID = 1060000 ~ 1069999 (撮る夫くん) userID = 1850000 ~ 1859999 (ATENXA) ATENXA…

Pythonらしいコードとは

「Pythonらしさ」とは何か,という問に,簡単な答えを一つ用意するとしたら,「Python言語の利点を最大限活かした実装のやり方やコーディングスタイル」とでも言えるのではないでしょうか。本日は,「Pythonの禅」とPython標準のコーディング規約を紹介しま…

編成側からセンサー間の距離測定ができるか

VRMNXpyで,2つのセンサー間の距離を,編成側から検測してみたいと思います。 単純な直線距離であれば,センサーの座標から簡単な計算で求めることができますが,線路に沿った距離はそう簡単には求められません。もちろん,丁寧に計算すれば求められますが…

VRMNXpyで名前空間はどうなっているのか

本稿では、VRMNXpyにおける名前空間、すなわちあるオブジェクトが参照されうる範囲(見える範囲=スコープともいう)がどのようになっているのかについて述べていきます。また、その結果として,どのような実装パターンが良さそうか、についても考察を与えま…

ATENXA式イベントの仕組み

前回はatenxa.richeventを使った時限式信号機のサンプルを紹介しました。 akagi.hateblo.jp 今回はその別語として,ATENXA式イベントシステムの仕組みをもう少し詳しく書いていきます。 サンプルコード 昨日の記事からの再掲です。まずはレイアウト。 #LAYOU…

時限式信号機をATENXAで

VRMNXのPythonで,時限式信号機を組み込むサンプルを紹介します。列車通過時に赤,その後所定の時間で黄,青と変化するようなギミックはATENXAを使うと簡単に実装できます。

ATENXA自動踏切,機能を公式にパクられる

とくに申し合わせたわけではありませんが,ATENXA自動踏切の機能がめでたく純正VRMに実装され自動センサーのダイアログから設定することができるようになりました。めでたしめでたし。 akagi-rails.github.io ↓疑惑の公式機能 vrmcloud.net 自動センサーの方…

ATENXA公開しました。

akagi-rails.github.io Discordで先行公開しておりましたが,VRMNXpyで多彩なギミックを実現するPythonパッケージATENXA(アテンジャ,もしくはアテンザ)を公開しました。撮る夫くんに引き続き,githubリポジトリ内で管理しております。 主要な機能 現時点…

VRMNXで使う汎用モジュールをどこに保存するか

(20216/22 修正) 普通のPythonであれば,pipというパッケージ管理ツールで,サードパーティのモジュールやパッケージを使うことができるようになりますが,VRMNXに搭載されているPythonエンジンではそういう便利なことはできません。撮る夫くん などのVRMN…

vrmapi.LOG()に文句タラタラ

VRMNXでログ出力に使うvrmapi.LOG()ですが,いや,実はコレが文句タラタラでして・・・。 型がstr, int, floatしか受け付けてくれない したがってうっかりdictやlistを入れるとTypeErrorが出てくる listやdictを使うシーンでのデバッグではstr()を噛まさない…

VRMNXの時間系イベントが使いにくいなあと思っているアナタへ

実はそんな人いない説 はともかく。 まずはバージョン5以前の時間系イベントとVRMNXpyの時間系イベントの仕様の相違について,Afterイベントを例に見てみましょう。 バージョン5以前のイベントは, //イベントを設定 SetEventAfter Target Method EventID In…

撮る夫くんNX Ver.3.0.3β

VRMNXむけに再構築された「撮る夫くんNX」です。車両追尾機能がついて実質的な移植作業が完了しました。 撮る夫くんNXの機能 手ブレ機能 被写界深度の簡単スライダー操作 ズーム&首振りの同時操作 車両追尾 撮る夫くん保存機能 被写界深度は一眼レフカメラ…

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

いろいろ試していますがVRMNXpyで一向にnumpyが使えません。いい加減やってられないので,リスト型をベクトルに見立てて線形代数の主要な計算ができるコードを用意しました。 vrmapiの命令で使うことが前提なので,クラスを作って演算子をオーバーライドとか…

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

先日,暫定版で公開した「撮る夫くんNX」の機能強化を進めています。 追尾機能の原型ができました。ビュワーのGUIでリアルタイムに追尾対象の編成・車両を選択できます。先頭車・最後尾だけでなく,中間車の追尾も可能なのは,撮る夫くんならではの機能です…

撮る夫くんNX Ver. 3.0.1 β

こちらは撮る夫くん旧バージョンのリリース記事になります。撮る夫くんの最新版(Ver. 3.0.3)はこちらからどうぞ。 以前からVRM5向けに公開していた「フライスルーカメラ撮る夫くん」を,VRMNX向けに移植しました。 撮る夫くんフォーカスの設定画面,思ったよ…

VRMNXのPythonではイマイチ空が飛びにくい

先日,冗談半分で以下の漫画を紹介した。 どういうことかというと,Pythonというプログラミング言語は,インターネットで様々な「モジュール」が公開されていて,様々な拡張機能を簡単に追加することができるということを言っている。 antigravity(反重力機…

撮る夫くんNX 準備中

VRMNXでも「撮る夫くん」が使えるように,スクリプトを新しく書き起こしています。 撮る夫くんは,VRMビュワーの新たな表現の試みとして,ハンディカメラで撮影した映像が手ブレしているようなカメラの動きをスクリプトを使って模擬したものです。このほか,…

VRMNXでnumpyが使いたい

ベクトル計算をすることを考えると,list型をベタベタ計算するよりは,numpyのほうが便利そうです。 しかしVRMNXのpythonエンジンにはnumpyがインストールされていません。かといって,インストールの仕方も分かりません。 手元のPython3.7環境のsite-packag…

自動踏切モジュール

少し前に作った踏切グループを拡張するクラスを,threadingを用いて遮断機の遅延作動に対応させ,さらに,モジュールとして独立したファイルにまとめました。(VRMNXでのマルチスレッド処理の実装と自作モジュールのインポートについては各記事を参照。) 「…

VRMNXpyでマルチスレッド

<注意: VRM NXは開発途上の段階であり,βテストの経過に伴って仕様変更の可能性がある。本エントリに示す情報は執筆時点でのものである。> (2019/1/23 現在 Ver. 6.0.0.25) Pythonではthreadingモジュールを使用することでマルチスレッド処理を行うことが…

Pythonは空をも飛べる VRMNXは?

<注意: VRM NXは開発途上の段階であり,βテストの経過に伴って仕様変更の可能性がある。本エントリに示す情報は執筆時点(v6.0.0.25)でのものである。> (2019/1/20 現在 Ver. 6.0.0.25) VRMNXのPythonエンジンでは,カレント作業ディレクトリ(os.getcwd()…

踏切のグループを拡張しよう

今回は,Pythonの「クラス」を使ってみます。 旧VRMスクリプトにもあった CrossingGroupCTRL は VRMNXpy にも実装が引き継がれましたが,これで踏切を作動させても踏切警報機にある方向表示機は真っ暗なままです。接近する列車の方向や何本もの列車が同時に…

VRMNXpyで205系のドア開閉

VRMNXpy(Pythonベースの新しいVRMスクリプト)を書いて,新たに実装されたドア開閉機能のある205系を実際に動作させてみた。指定距離停止をやってみた回ではセンサーでイベントを発生させたが,今回はキーイベントを使用する。 <注意: VRM NXは開発途上の…

種別コードを先入れ先出しするキュー Python編

以前,バージョン5のVRMスクリプトで種別コードを先入先出するキューの作例を紹介した。旧VRMスクリプトには配列変数のような概念はなかったので,32bit int型変数を3ビットずつ区切って0~7の種別コードを入れる「枠」とみなし,ビット演算によって種別…

VRMNXpyで指定距離停止

今回より五月雨式に,VRMNXpyでいろんなことをしてみる不定期連載をしていきます。 文体は簡便のため「だ・である調」となります。Python一般のごく基本的なところは他の文献・サイト・ブログをあたるのがよいでしょう。いいものがたくさんあります。 質問・…

VRMNXpyはどんなのか・2

前回のエントリはVRM NXに搭載された「Pythonベースのスクリプト」(長ったらしいのでVRMNXpyと呼ぶ)のマニュアルが全く未整備であったので,表面的な部分から実装がこんなのだったらいいなーと思って書いた。 まもなくして,思ったよりも早く,スクリプト…

VRMpyはどんなのか

なんとかVRM NXのアプリケーションが起動したので,Pythonベースに刷新されたスクリプトがどんなものであるのか覗いてみた。 とはいってもビュワーはちっとも起動しないので以下に書くことはすべて妄想である。そこを割り引いて読むこと。 上の図は「新規レ…

VRMNXへのPython導入は・・・

このブログではこのエントリ以来,VRMNXについては敢えて静観に近いことをしていましたが,楽しみでないわけがなかったのでありまして。 静かにヤキモキ(Twitterでは,実はやいのやいのと言ってましたが)している間に,10年ぶりのオープンβテストの告知が…