Densyakunのブログ

高校生プログラマの雑なブログです。ゲームを開発しています。

【Blender】【GIS】BlenderGISのBasemapsの注意点、地図が真っ白い、地図が表示されない場合の対処法

こんにちは、電車君です。

最近記事増えてきたかな?と思っていますが、もっと記事を投稿したいと思います。(下書きが溜まってます、、、)

 

 

 

今回は、BlenderGISのBasemapsの注意点を解説します。

 

BlenderGISとは

BlenderGISとは、BlenderGISを扱うためのBlenderアドオンです。

デフォルトのBlenderでは、.shapeファイルや.osmなどが使えないため、GISを扱うにはこのアドオンが必要になります。

 

ダウンロード、導入はこちらから

https://github.com/domlysz/BlenderGIS

 

BlenderGISでできること

BlenderGISでは.shapeファイルのインポート、エクスポートの他に、地図を表示するBasemapsや、OpenStreetMapの.osmファイルのインポート、スペースシャトル立体地形データ(SRTM)から地形を生成する機能などがあります。

 

このようなGISには必ず経緯度の座標を使用することになりますが、BlenderGISではプロジェクトに座標を記録し、自動的に座標を合わせてくれる便利な機能があります。

他の人や環境にBlenderGISが入っていれば、他の環境でも同じプロジェクトを使用するだけで座標を保持できるようになっています。

 

今回は地図を表示するBasemapsの注意点を解説します。

 

「Please define a valid cache folder path」と表示され、Basemapsが使えない場合

これはCache folderが設定されていない場合に出る警告です。

PreferencesからBasemaps内のCache folderにフォルダパスを設定してください。

これを設定することで、地図の画像などのキャッシュが保存されます。

ファイルが溢れるわけではないので、ドキュメントなどを指定しても大丈夫だと思います。

作成されるファイルは「OSM_」などから始まる.gpkgファイルになります。これは、地図のソースとレイヤー別にファイルが分けられています。

 

地図が真っ白い場合

ソースがOSM WMSだと地図が白くなることがあります。

この場合はソースをGoogleOSMに変更することをおすすめします。

 

地図が表示されない場合

上の地図が白い問題を解決した上で、この問題が起こる場合は、地図のズームレベルが関係していると思われます。

OSMの場合、ズームレベル1~19で表示されます。

テンキーの + - キー 、またはマウスホイールでズームレベルを変更することができます。

 

また、XY面の平行投影でのみ表示されますので、注意してください。

 

Get OSMでElevation from objectを押すとクラッシュする

押さない方がいいです。

 

 

 

最後に、便利な機能があります。

マップ操作中にGキーを押すと検索できます。

検索すると地図が移動してその場所を原点にすることができます。

 

 

 

今回は以上です。他にあれば追記するかもしれません。

 

【Unity】UIパーツをクリックする【uGUI】

こんにちは、ぼちぼちゲーム作ってる電車君です。

今回は、UnityでuGUIのTextやImageなどのUIパーツをクリックする方法を解説します。

 

方法1. EventSystem.current.RaycastAllを使う

まず調べて出てきたのはこれでした。

 

PointerEventData pointerData = new PointerEventData(EventSystem.current) { pointerId = -1 };
pointerData.position = Input.mousePosition;
List<raycastresult> results = new List<raycastresult>();
EventSystem.current.RaycastAll(pointerData, results);
if (results.Count > 0)
	print("!");

 

推測ですが、PointerEventDataという仮想のカーソルのようなものを作り、カーソルの位置を設定して、Rayを飛ばして判定するものですが、

以上のコードを書いてから、EventSystem.current関連を書くのと、

EventSystem.current関連を書いてから、以上のコードを書くのとで、動いたり動かなかったりしたのと、

あとは、一見どのような処理がされているのか分かりづらいので、使い勝手が悪いと思います。

 

方法2. Buttonを使う

これが一番カンタンだと思います。

UIパーツと同じオブジェクトにButtonコンポーネントを追加するだけで、クリックできるようになります。

僕はTextに使いましたが、Imageなどにも使える思います。

見た目もフォーカスしたときの色や、クリックするアニメーション?なども動作するので、非常に簡単です。

f:id:Densyakun:20181023033917p:plain

f:id:Densyakun:20181023034003p:plain

 

 

 

以上です。

【MCCxPLT2018】Minecraft Coders ConferenceでLTをしました! 初めてのプレゼン

こんにちは、

早くもクリスマスやお正月の話ばかりで、今年はハロウィンないのかと思っている、電車君です。

最近、ガルパにハマってます。先月始めたばかりですが、Expertできるようになってきました(フルコンボじゃないよ)。

 

 

先日2018年10月14日の、Minecraft Coders Conference(以下、MCC)でLT(ライトニングトーク)をしました!

 

MCCとは、マイクラに関する話題を、LT形式で話すと言うものです。

なおMCCに引き続き、プログラミングに関する話題をLTするPLTも行われました。

5分と10分の枠があって、私は10分枠にしましたが、マイクラ歴6年分を10分にするのは大変ですw

ちなみに、後日気付いたのですが、当日は鉄道の日でした…!

 

 

そして、初めてのプレゼン、LT、そして顔出しでした

何でも開始5分前になると緊張する人で、

凄く緊張してて声が出てたか気になりますが、。

 

動画はこちら(2:11:53から)

Minecraft Coders Conference&プログラミングLT 2018

Minecraft Coders Conference&プログラミングLT 2018 - YouTube

 

ちなみに、このプレゼンには佐野日本大学中等教育学校・高等学校・ICT教育推進室長の安藤昇さんなども登壇しています。

 

 

一応LTは無事終わりましたが、重要なとこを飛ばしたり、言い忘れてたことがあったりしたので、

この記事で訂正、補足したいと思います。

 

 

 

闇が深いと言われたデジプラスサーバーの話

言っていいのか気になっていたのですが、まあまあウケたので良かったと思います。

多分、"半年喧嘩して仲直りした"、電鯖の荒らし事件の方が闇が深いと思いますが。(説明すると時間がかかるので、LTでは省略しました)

 

荒らし事件についてはこちらに少し説明があります。(他にも濃い話があると思いますので、甘い物でも食べながら見てください笑)

マイクラ離れと、マイクラでやりたかったこと - Densyakunのブログ

実は電車君サーバーが始まる前にやっていた生活サーバーがありまして、そちらが初代電車君サーバーのようなものでした。

初代の方で遊んでた人たちは、電鯖で発生した「King達荒らし事件」の奴らです。(和解済みです)

 

 

電車君サーバーの略称

電車君サーバーは通称、「電鯖」(でんさば)と言います。

 

端っこの方にある文字見た?

そして、電鯖の話あたりから、端っこの方にたまに出てくる文字があります。

  • 「実は、、、このプレゼンの背景はほぼ電鯖!」(電車君サーバー
  • 「一部のプラグインGitHubにソースをあげています」「本当はもっとあるけど公開していない」(自作プラグイン一覧)
  • 「私が公開しているModはPockyMODのみですが、残念ながら動かないそうです」(PockyMOD、左下)
  • GitHubでソースを公開中」(JapanPack)

 

皆さんは気付いたでしょうか?

読んでもらえたら嬉しいです。

 

そして、アジさん(カメラ)もカメラワーク大変だと思いますが、頑張って下さいw

 

電車君サーバーの出来事

電鯖の管理者であった「sorayamakazuki」さんは、サーバーで色々やってくれました。

なんと、いくつかのラージチェストいっぱいにダイヤモンドブロックを採ってくるような人で、

エンダードラゴンも討伐してくれたりしたので、サーバーで楽しんでくれたのが一番嬉しかったです。

ですので、人が少ないなど色々ありましたが、小規模でも友達などが楽しんでくれたらそれでいいと思います

(ちなみに僕はエンダードラゴンをまともに倒したことがありませんw)

 

プラグインテストサーバーについて

サーバー一覧には「電車君プラグインテストサーバー」(以下、プラテス鯖)と言うのがありました。

プラテス鯖はその名の通り、開発中のプラグインをテストするサーバーになります。

僕の場合は常に電鯖を開いていたので、電鯖でテストするのがいいと思われるかもしれませんが、

プラグインによっては開発中にワールドを誤って破壊してしまう可能性があったり、いちいちリロードすると鯖民に迷惑がかかる可能性があるため、そういった意味でプラグインをテストするための専用サーバーを用意しておくことをおすすめします

 

どうぶつの森サーバーの説明不足

サーバー一覧には、「どうぶつの森サーバー」と言うのが載っており、解説していましたが、説明が分かりにくく、イメージできなかったと思いますので、ここで解説します。

 

まず、ここで言う村と言うのは、マインクラフトの村とは全く関係ない、どうぶつの森の村をイメージしたものになります。

 

また、村はプラグインによって自動的に生成され、プラグインにより配置、管理されます。

また、村には村番地と言うもので管理されています。

とびだせどうぶつの森で言う「夢番地」のようなものだと思ってください。

つまり、生成される「村」は正方形で、どうぶつの森にある駅のように、北側に線路があり、並べられた村の線路は全て繋がっているという意味です。

つまり、この線路を移動するとすべての村に行けるような構想になっていました。

(その場合は時間がかからないようにテレポートさせます)

 

ここまでは全て完成していて、釣りをしたり、アイテムを追加したり、アイテムを地面に埋められるようになどする予定でした。

 

説明不足で申し訳ありませんでした。

 

 

また、どうぶつの森サーバープラグイン「AnimalCrossing」は、GitHubに公開しています

GitHub - Densyakun/BukkitPlugin_AnimalCrossing: 【開発休止中】どうぶつの森をマイクラに追加するプラグインです。自分や友達の村で遊べます。

一緒にやりたいと言う方がいれば、またやろうと思っています。

 

また、サーバー一覧には入っていないサーバーがこちらにあります。

マイクラ離れと、マイクラでやりたかったこと - Densyakunのブログ

 

サーバーを開くために必要なもの

そこそこのスペックとネットがあれば開けると言っていましたが、

私の思う最低限のスペックは、メモリ2GB以上のものです。

ただ、使い方によってはほとんどの場合で個人的な作業が出来なくなりますので、メモリは4GBでデュアルコア以上の物にしてください

OSやストレージなどは特に決めていませんが、ノートPCだと処理の低いCPUが多いので注意して下さい。

CPUはできる限り新しい世代のものをおすすめします。

 

また、ネットに関してですが、

実はうちはADSL(今年無くなるみたいです)で、電鯖もそれでやってましたが、おすすめはしません。

よくDDOSの被害にあいましたが、ADSLはすぐ落ちます。

また、数GBなどの大容量のダウンロードが必要な際に時間がかかってしまうので注意が必要です。

 

また、サーバーを開いてもポート開放ができないと人が来れません

僕の場合は、UPnPCJ(Windows専用)でポート開放していました。

使い方に関しては、Discordで聞いてください。

MacLinuxでは他のWindowsPCからUPnPCJでポート開放する方法しか知りません、すみません。

 

サーバー運用での注意点がスカスカ

注意点が一つしかない上に、そんなに注意点なのか?と思われると思います。

本当はもっとあるはずなのですが、思い出せませんでした…

電鯖の荒らし事件に繋がるのですが、OP権限をむやみに与えると、乱用され、簡単に荒らされてしまうので、対策をとり、むやみにOP権限を与えないで下さいと言う話でした。

 

権限を"職業"で分けるという発言をしましたが、言いたかったのは権限を"役職"で分けると言いたかったので、誤解のないようにお願いします。

 

また、サーバー運用での注意点などは、この記事の後述に、サーバー運用での重要なことについて書いてありますので、そちらを参考にして下さい。

 

また、PermissionsExの使い方は、僕が言うガキの頃に作った動画がありますので、参考にして下さい。(当時のバージョンとは異なる部分があります)

[Minecraft]PermissionsEx権限設定方法[画質改良版] - YouTube

動画が古いからか、かなり人気です。よく知ってると言われます。検索でも上の方に出てきます。見てくれてありがとうございます。

 

突然の「プログラミングはマイクラで覚えろ」(名言)

僕が一番言いたかったことです。

 

まず、プログラミングは難しいです。

何でも最初は難しいですが、慣れれば簡単です。

 

皆さんはプラグインやModを作ろうとして、プログラミングが分からなくて、プログラミングを学ぼうとしますが、

"プログラミングが分からないとプラグインが作れない"と、ネガティブ思考になります

 

そのうち、プログラミングを覚える事だけになり、プラグインなどを作る目標を失い、挫折します。

 

 

ですので、プラグインを作りながら、プログラミングを学び、覚えていくのが、一番ラクで、一石二鳥です

 

僕の場合もプラグインを作ろうとしてプログラミングを理解できるようになりました。

 

プレゼンでも言っていた作り方講座は、記事の最後に書いてあります

作り方講座では、プログラミングができないと出来ないといったような表現はなく、

必要な環境(開発環境)を整え、プラグインを作り始めることができます。

自分で作ったプラグインが動くと言うのが楽しく、いろいろいじったりしていくとだんだん慣れて、作れるようになります。

誰でもすぐにできるようになりますので、是非やってみて下さい

 

もし分からないことがあれば、お気軽にDiscordからご連絡下さい。

 

完全に編集段階な件

自作プラグイン一覧に紫色で「このへんに画像を追加する」と言う文字があります。

 

プレゼンにいっぱいで気付かなかったのですが、完全に編集段階でした…^^;

 

また、まだまだ未公開のプラグインがたくさんあります。

これでもプラグインが多すぎると思いますので、下の方にプレゼンが見れるURLを載せていますので、じっくりご覧くださいw

 

ちなみに、上の方が古いプラグインになります。古いやつはバグが多く、直す予定がないものです。

 

話しきれなかったForgeModの話

ポッキーModとJapanPackと言うModがありましたが、説明しきれなかったのでよくわからなかったと思います。

 

また、ポッキーModは公開していますが、残念ながら動かないそうです。

 

JapanPackは一番作りたいModになります。

一緒に作ってくれる人がいれば、再開しようと思っています。

 

ちなみに、ドラえもんModなどの案もあります。(22世紀のワールド作ってもしょうがないですがw)

 

ツイッターのロックについて

ホームページに説明があります。

電車君のホームページ トップ

 

質問の回答ミス

MCCの午前の部にてプレゼンをしておりました、「Do it プログラミングスクール」の松尾高明さんからの質問で、

「マイクラのサーバーを、クラウド上のサーバーで開くのが多いのか、自宅のPCで開くのが多いのか」と言う質問に対して、

「僕は自分のサーバーで開きました」と回答しましたが、

正しくは「私は自分のPCでやってました」でした。誤解を生む曖昧な言い方になってしまって、すみませんでした。

 

サーバー一覧に載せた電鯖などのサーバーは、自分のPCでやっていました。

実は、電鯖を始めてから3年ほどノートPCで開いていましたが、パソコンを水没させてしまい自作PCを組み立てることになり、それからずーっと自作のデスクトップPCでやっています

ノートPCはASUSのウルトラブックで、スペックが良かったので2つのサーバーを同時に開くことができました。そのため、電鯖(他の鯖と区別するため本鯖と呼んでいました)とプラテス鯖を同時に開いていました。

 

ちなみに、自作PCはこのブログの最初の記事にあるものです。

 

また、松尾さんのプレゼンも良かったです。

松尾さんは41分あたりからプレゼンしています。

 

 

 

 

 

以上いろいろ説明不足などがありすみませんでした。

またプレゼンが見たいという方は、こちらからご覧下さい。

無題のプレゼンテーション - Google スライド

適当にGoogleスライドで作ったものです。

 

 

 

今は電鯖はやっていませんが、おつまみ鯖やいろいろなサーバーの管理者や、プラグイン担当をやっています。

おつまみ

 

サーバー運用での重要なこと

プレゼンに載せ忘れていたのですが、人気なサーバーを作れる方法について、他のサーバーに教えた内容です。

※あくまでも電車君調べです。参考程度にどうぞ。

 

サーバーを知れること
・・管理者が友達に宣伝すること
・・minecraft.jpなどのサーバーリストに掲載すること
・・人を誘いやすいこと
サーバーに入りやすいこと
・・サーバーアドレスが正しく書いてあること
・・1日も休まず24Hやっていること
・・最新のバージョンに対応できること
楽しいサーバーであること
・・すべてのプレイヤーに対して管理者が優しいこと
・・お初さんを誘導できること
・・定期的かつ常にイベントをやっていること

 

 

 

ツイッターやりたいですね、はい。

 

 

 

MCCxPLT2018の司会やスタッフの皆さん、素晴らしかったと思います。

ただ、質問だけでなく意見や感想とかも聞いてみたほうが良いと思います。

皆で話し合う機会があるといいですね。

 

今回は本当に楽しかったです。

来年もまた、開催する可能性が高いと聞いているので楽しみにしてます。

では。

 

プラグインの作り方講座はこちら(更新サボっててすみません)

【Spigot】Bukkitプラグインの作り方講座 カテゴリーの記事一覧 - Densyakunのブログ

 

GitHubはこちら(プラグインやJapanPackのソースがあります)

Densyakun (電車君) · GitHub

【Unity】100kunit(100000unit)以上の座標を使えない問題

こんにちは、電車君です。

実は、Unityには100kunit(100000unit)以上の座標を使えない問題があります。

 

transformの座標に100kunit以上の値を入力すると「Due to floating-point precision limitations, it is recommended to bring the world coordinates of the GameObject within a smaller range.」と警告文が出ます。

もちろん警告文ですので全くできないわけではないのですが、

インスペクタータブから該当オブジェクトをダブルクリックや4回クリックで原点に移動され、追跡することもできません。

 

僕は、すべてのものを小さくする、つまり1unit=10mといったような方法をやってみたのですが、

映像がおかしくなってしまい、まともにゲームとは言えなくなってしまいました(座標がカクカクになり、移動する物体がもぞもぞする)。

 

他にも縮尺を変えるなど、いろいろやってみたのですが、

結果的に「チャンクを導入し、座標を範囲内でループさせる」という方法になりました。

ただし、この方法ではマルチプレイなどでプレイヤー間の座標が異なってしまうため、そのへんを独自で対応させる必要があるかと思います。

 

映像さえおかしくならなければもう少し簡単だと思うのですが、

現時点で、-100kunit~100kunitを超える座標を使いたい場合には、この方法しかなさそうです。

 

【ETS2 1.32.3.7s】ETS2がアップデート!トレーラーが所有できるようになった!

電車君です。

 

ETS2が1.32.3.7sにアップデートされました。

基本的にTruckersMPでマルチプレイをしているので、

TruckersMPが対応するまでアップデートしていなかったのですが、

先日、TruckersMPがアップデートに対応したので早速やってみました。

 

結構ダウンロードに時間がかかったので、

もしや大規模なアップデートでもあるのかと思っていたら...

 

...予想的中!!!

 

 

 

起動するとこんなものが...

f:id:Densyakun:20181005193200j:plain

(ん?トレーラーを購入...?あぁトラックか...)と思いながら増えたボタンをよく見ると...

 

 

 

トレーラーディーラー!?トレーラーアクセサリー!?!?、、、トレーラーマネージャーだと!?

 

 

 

早速購入。

トレーラーディーラーにて購入したトレーラーは、

トレーラーマネージャーに表示されます。

ちなみに、トレーラーはどこでも購入でき、購入済みのお好きなガレージに格納できます(トレーラーがガレージに表示されることはありません)。

f:id:Densyakun:20181005194758j:plain

購入したトレーラーは初期状態でパブリックとなり、

雇っているドライバーが勝手に使います。

トレーラーの状態をプライベートに変更することで、

自分だけが使用できるようになります。

 

雇っているドライバーがすでに使用している場合は使用できないので注意して下さい。

 

 

 

f:id:Densyakun:20181005193223j:plain

少し前からですが、ミラノ辺りが変わっているらしいのでついでに来てみました。

 

 

 

今まではトラックで出発地に移動し、トレーラーを連結するだけでしたが、

自分が所有するトレーラーを使って、トレーラーに対応した貨物を積むことができるようになりました。

貨物を積むには少し時間がかかります(TruckersMPでは大丈夫ですが)。

f:id:Densyakun:20181005193228j:plain

 

 

 

f:id:Densyakun:20181005205127j:plain

同じのがいっぱいいる

 

 

 

事故などでダメージを受けるのはトレーラーなので、

自分のトレーラーで荷物を積む場合は、人のトレーラーを運ぶ場合と違い、

精密貨物でない限り、ちょっとした事故では荷物がダメージを受けるということはありません。

f:id:Densyakun:20181005205207j:plain

 

 

 

ダブル!?Bダブル!?

f:id:Densyakun:20181005200040j:plain

デンマークノルウェースウェーデンの追加パックを購入している人のみ使用できるみたいです。

私は持っていませんが、一回やってみたいですね。 

Bダブルはどんな挙動をするんでしょうか?(それとも固定されてるだけ?)

 

 

 

f:id:Densyakun:20181005220943j:plain

よいETS2ライフを!

 

 

 

おまけ

f:id:Densyakun:20181005221259j:plain

これどうやって行くんだ!?(追加パック買えってか!?)Kielの近くにあります

【Unity】スクリプトからTransformのparentとposition、またはrotationを設定すると、ローカル座標になってしまう問題

こんにちは、電車君です。

 

スクリプトからTransformのparentとposition、またはrotation(eulerAngles含む)を設定すると、positionやrotationがワールド座標ではなくローカル座標になってしまうことがあります。

また、SetParentの第二引数を設定しても解決しない場合もあります。

 

またこの問題の不可解な点は、先にparentを設定しても問題が起きることです。

普通に考えたらparentを設定したあとにpositionでワールド座標を設定できると思いますが、設定した座標がローカル座標になってしまいます。

要するに親オブジェクトの座標がxとすると、子オブジェクトの座標は2xになってしまうのです。

 

私の解決方法としては、parentを設定してlocalPositionにローカル座標を入れることにしています。

その場合はpositionにいれるワールド座標をローカル座標に変換する必要がありますので注意してください。

私がこの問題にあったバージョンは2017.3.1です。

現在のバージョンでは解決されているかもしれません。

【Python】Raspberry Pi 3、Python3.6でTensorFlowがインストールできない場合の解決方法

こんにちは、電車君です。

今回は、Raspberry Pi 3 Model BでTensorFlowがインストールできなかった話と、私の場合の解決方法を紹介します。

 

 

原因: Python3.6では出来ない

公式にラズパイが対応したと聞いて、すんなりできると思っていたのですが、

Python3.4までしか対応していないということを知りました...

私のRaspberry Piには4つもPythonが入っていて、たまたまPython3.6に入れようとしていたので、できなかったようです。

 

他のPythonにPython3.4があったのでそちらに導入しましたが、

Pythonをダウングレードしたほうがいいかもしれません。(やったことないので簡単にできるかわかりませんが)

 

 

Jupyter Notebookではやりづらい

目的としてはKerasを使用したかったのですが、

Kerasが使用できるPythonのパスと、

Jupyter Notebookが使っているAnacondaのPythonのパスが違ったので、

sys.pathでパスを繋ぐとできるのですが、

カーネルが再起動するたびにいちいち再設定する必要があるので、

めんどくさいです。

何かいい方法がありましたら教えてください。

 

 

以上です。(ラズパイそんなに関係なかったかも)