Alpaca Tech Blog

ゲーム作る系 草食動物の備忘録

【Ubuntu】lsやtree コマンドでファイルサイズをKB/MBで表示する -hオプション

定期的に利用するのでメモ

-h オプションで確認可能

 

$ ls -lh
合計 36M
-rw-rw-r-- 1 username username  2.3K  6月  6 13:44 README.md
-rw-rw-r-- 1 username username  33M  6月  6 13:42 test1.model
-rw-rw-r-- 1 username username 3.2M  6月  6 13:42 test2.model

 

$ tree -h
.
└── [4.0K]  test
    ├── [2.3K]  README.md
    ├── [ 32M]  test1.model
    └── [3.1M]  test2.model

1 directory, 3 files

 

 

バージョン確認

$ cat /etc/issue
Ubuntu 20.04.4 LTS \n \l

 

$ ls --version
ls (GNU coreutils) 8.30
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

作者 Richard M. Stallman および David MacKenzie。

 

$ tree --version
tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro 

 

【Unity】GoogleMobileAdsSettingsを変更しても保存されない

現象

Google Mobile Ads Unity Plugin v6.1.2 にて、

GoogleMobileAdsSettings に設定しても空白に戻ってしまい以下のエラーが出る。

57: [Unity] ASSERT: Cancelling DisplayDialog: Google Mobile Ads Error: iOS Google Mobile Ads app ID is empty. Please enter a valid app ID to run ads properly.
58: [Unity] Cancelling DisplayDialog: Google Mobile Ads Error: iOS Google Mobile Ads app ID is empty. Please enter a valid app ID to run ads properly.

対処方法

f:id:alpacatech:20211026215956p:plain

Delay app measurement にチェックを入れることで保存できた。

 

確認バージョン

【Unity】Obi Softbodyでプルプルなプリン作ってみる

この記事は「Unity アセット真夏のアドベントカレンダー 2021 Summer!」 30日目の記事になります。

概要

積んでた Obi Softbody(軟体物理演算) でプリン作ります。ぷるぷるしたい。

完成動画

こんな感じのプリンを作りました。

硬さの調整はこんな感じ

f:id:alpacatech:20210829233203g:plain

 

目次

 

紹介するアセット

アセット紹介動画

単にぐにょぐにょさせるだけでなく、へこんだままになる、キャラクターの一部だけぐにょぐにょさせる等の機能があります。

 

動作環境

[OS] Windows10

[Unity] 2020.3.13f

[Obi Softbody] 6.2

※OSやバージョンが違うと設定方法が変わる可能性があります。確認お願いします。

 

実行までの設定 

1. プリンのメッシュを準備する

1.1. Blenderで作成して、fbxで出力します。

f:id:alpacatech:20210829072441p:plain

※ぐにょぐにょするために頂点は多めに設定してください(これでも少ない方)

 

1.2. Unityにfbxをインポートした後Read/Write Enabled にチェックを入れます

f:id:alpacatech:20210829082408p:plain

※これをやらないと設定時に「The input mesh is null, or not readable.」 というエラーが出ます。

 

2. Softbody(ぐにょぐにょ物理演算)の設定を行う

設定は大きく2種類あります

A. Surface softbody

f:id:alpacatech:20210813144237p:plain

中身が詰まっていませんが処理が軽いみたいです(表面のみシミュレートするから)

B. Volume softbody

f:id:alpacatech:20210813144321p:plain

ボクセル的に中身を詰めます。処理は重めですが正確な演算ができるみたいです

参考:Obi Physics for Unity - Softbody blueprints

今回は、 B. Volume softbody を利用します。

2.1. 設定(Softbody Volume Blueprint)の作成

右クリック>Create>Obi>Softbody Volume Blueprint を選択して作成

f:id:alpacatech:20210829074019p:plain

 softbody volume blueprintが作成されます(名前は自由に変更可能)

f:id:alpacatech:20210829073950p:plain

2.2. メッシュの指定

 softbody volume blueprint を選択して

1. Input Meshに対応したいメッシュを選択

2. Generateボタンを押して

f:id:alpacatech:20210829225022p:plain

3. Editを押します。 

2.3. 当たり判定の確認

Editボタンを押すと専用の設定画面(シーン)に移動します。

f:id:alpacatech:20210829225305p:plain

※Render modeをEverythingに変更すると当たり判定が視覚的に見えるようになります。(白い球)

各パラメータを調整して判定の大きさや密度(処理速度に関わる)を変更してDoneを押してください。

設定が多いので細かい説明は、公式ドキュメントを確認してください。

 

3. 壁の当たり判定を設定する

Unityの物理演算はCollider(BoxCollider, MeshCollider等)ですが、

Obi Softbodyは、別途 Obi Colliderも適応する必要があります。 

f:id:alpacatech:20210829230338p:plain

Souce ClliderにUnity標準のColliderを指定してください。

 

4. プリンのメッシュにSoftbody(ぐにょぐにょ物理演算)を適応にする

4.1. プリンに設定を割り当てる

プリンオブジェクト(Skinned Mesh Renderer) に、

Obi Softbody, Obi Softbody Skinner を追加します。

Obi Softbodyに 2で作成した設定(Softbody Volume Blueprint)を割り当てます。

Obi Softbody Skinnerの[Bind skin]ボタンを押すとメッシュが変形できるようになります。

f:id:alpacatech:20210829234028p:plain

 

4.2. プリンが物理演算を行えるようにする

物理演算を行うには、Obi Solverオブジェクトの子にプリン(Obi Softbodyのオブジェクト)を設置します。

f:id:alpacatech:20210829230553p:plain

Obi Solverは、以下の通りになります。重力や物理演算のタイミング等の設定になります。

f:id:alpacatech:20210829231435p:plain

これでちょっと硬めのプリンが落下できるようになりました。

f:id:alpacatech:20210829232038g:plain

4.3. プリンの硬さを変更する

 Obi Softbodyの Deformation resistanceの調整で元に戻る強さを調整できます。

f:id:alpacatech:20210829233203g:plain

 

Obi Softbodyの設定は以上になります。

説明で補えていない部分もあるかもしれないのでサンプルシーンも同時に確認してください。

f:id:alpacatech:20210829231310p:plain 

↑画面をクリックするとボールが増えるサンプル

 

今回は、プリンのポリゴン数が少なく少しカクカクしていますがポリゴン数を増やすとなめらかなプリンになると思います。

 

利用したアセット

軟体物理演算

無料の食器

 

 

【C++/CLI】OpenFileDialog::ShowDialogでフリーズする

発生

openFileDialog1->ShowDialog();

を実施すると、ダイアログが開かずアプリケーションがフリーズしました。

 

 

原因

エントリーポイントの関数に

[STAThreadAttribute]

指定が無いと、フリーズするみたいでした。

 

using namespace System;
using namespace System::Windows::Forms;

 

[STAThreadAttribute]
int main(array<System::String ^> ^args) {
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false);

    Application::Run(gcnew MyApplication::MainForm());

    return 0;

 

 

 

参考

STAThreadAttribute クラス (System) | Microsoft Docs

STAThreadの意味は? - .NET Tips (VB.NET,C#...)

 

開発環境

 

 

【Unity】夏なので洞窟を掘って探検したい【Digger】

今回は、洞窟を掘って探検したいと思います。  

最終的にGaiaと組み合わせてこんな感じ。

 

この記事は「Unity アセット真夏のアドベントカレンダー 2020 Summer!」10 日目の記事になります。

昨日のアドカレは、ホロウさま さんの Anyportraitでゲームに用いた実装 でした。

明日のアドカレは、れいちゃん さんの「Lightning – Procedural Lightning」について紹介 です。

 

目次

 

概要

Unityには、標準でTerrainという地形を作成する機能がありますが、Terrainは高さ情報しか持たないので穴を掘ることができません。今回紹介するDiggerは、Terrainに対して穴を掘ることができ、Terrain同様複数のテクスチャを塗ることも可能です。3Dの判定もあります。

 

Diggerは、DiggerとDigger Pro があります。

Digger Proは、Diggerの機能に加えてリアルタイム、ゲーム内で掘る機能を持っているようです。 参考:https://ofux.github.io/Digger-Documentation/

 

今回は通常版のDiggerを使用します。

 

使い方

シーン内にTerrainがある状態で、メニュー > Tools > Digger > Setup terrainsを選択する。

f:id:alpacatech:20200808080950p:plain

 Hierarchyに、Digger MasterとTerrainの子にDiggerが作成されます。 

f:id:alpacatech:20200808082907p:plain

 

次に、Digger Masterを選択しActionを選択すると穴掘りや追加等の編集ができます。   

 

機能説明

Action

アクションは6種類

f:id:alpacatech:20200808082250p:plain

Dig ... 掘る

f:id:alpacatech:20200809134846g:plain

Add ... 追加

f:id:alpacatech:20200809144213g:plain

Paint ... テクスチャ塗る

Diggerの部分にテクスチャを塗る。Terrain地形は別途Terrainで塗る必要あり。

f:id:alpacatech:20200809144322g:plain

Reset ... 元に戻す

f:id:alpacatech:20200809144358g:plain

Smooth ... 凹凸を無くす

f:id:alpacatech:20200809144437g:plain

BETA_Sharpen ... 凹凸を出す

f:id:alpacatech:20200809144458g:plain

 

Brush(形状)

Dig/ Add/ Paintは、形状を選択できます

 f:id:alpacatech:20200809121252p:plain

Sphere(球)

所感:円状の穴を掘る時やアーチ作る時?

f:id:alpacatech:20200809145425p:plain

 

Half Sphere(半球)

所感:地面が平らな洞窟掘るのに使える

f:id:alpacatech:20200809145650p:plain

 

Rounded Cube(立方体)

所感:小部屋作るのに使える?

f:id:alpacatech:20200809145116p:plain

 

Stalagmite(石筍)

所感:地面だけPaintしたい時に使えた。

f:id:alpacatech:20200809145239p:plain

 

 

Gaiaと連携してみる

去年紹介したGaia(現在はGaia2)と組み合わせてみました。

alpacatech.hateblo.jp

 

Gaiaは、Terrainで生成されているのでそのまま洞窟掘れました。

基本的に、DigのHalf Sphereで掘り進めます。(カメラを水平にして同じ所をクリックし続ける)

f:id:alpacatech:20200810012636p:plain

 

上や下から現在どのくらい掘れているか確認できる

f:id:alpacatech:20200810012949p:plain

 

段差等の注目してほしいところはPaintで見せたり f:id:alpacatech:20200810013101p:plain

 

Rounded Cubeで部屋作ったり、Sphereで坂道調整したり 

f:id:alpacatech:20200810013245p:plain

 

トーチと宝箱設置

f:id:alpacatech:20200810013442p:plain

 

完成は、冒頭でも紹介したのですがこんな感じ。


多少慣れが必要ですがもりもり掘れました。

 

  

 

注意事項 

今回の作成でハマったことや気づいたことメモ

  • Terrainは、Contribute GI がOFFであること

DiggerとTerrainのマテリアルが違うので描画が違う可能性があります。

f:id:alpacatech:20200808082425p:plain

static変更しても違いがあったらライト焼き直し

 

  • バージョンは、Unity 2019.3 以降だと最適化されるので 2019.3以降推奨

ドキュメントに記載 https://ofux.github.io/Digger-Documentation/

2019.3以降のTerrainは、一部削ることができるのでDiggerと相性が良い

 

  • ディレクショナルライトを消しても洞窟内が真っ暗にならない

ディレクショナルライトを消しても、Skybox等の環境光が影響するので真っ暗になりません。ライティング設定でIntensity Multiplierを0にするとライトを切ると暗くなりました(ライティング環境によって調整する数値が異なる可能性あり)

今回は環境光ありでやっています。(この変更は適応していない)

f:id:alpacatech:20200810014054p:plain 

f:id:alpacatech:20200810014112p:plain

 

 

利用したアセット紹介 

穴を掘る

今回は、Digger(左の方)

マップの自動生成

Gaia2

宝箱やトーチ 

無料のものを利用させてもらいました。

 

 

炎のエフェクトが無かったので追加 ※注意↓

このアセットは、EffectExamples以外を入れると、プロジェクト設定が上書きされたりTextMesh Proが重複したりするので注意が必要

f:id:alpacatech:20200810015321p:plain

 

開発環境

OS

f:id:alpacatech:20200808081410p:plain
Unity

Version 2019.4.1f1 (e6c045e14e4e) Personal
Wed, 17 Jun 2020 20:31:52 GMT
Branch: 2019.4/release

  

 

 

 以上です。

【Unity】近い影が出ない時の対処【Light】

現象

オブジェクトが小さい?と近い影が出ない状況が発生しました。

f:id:alpacatech:20200104224659p:plain

皿の上に柱と寿司を置いているのですが、

柱の影は離れて表示、寿司の影が出ない状態。

この時の寿司の大きさは 0.3(m)とか。

 

ピーター パニング(ピーターパン現象)と呼ぶらしいです。

f:id:alpacatech:20200104224258p:plain

docs.unity3d.com

 

対処方法

とりあえずbias減らすと表示できました。

f:id:alpacatech:20200104225226p:plain



 

【ffmpeg】動画をトリミング(時間 or 画角)

 

ffmpeg -i src.mp4 -ss 60 -t 30 -c copy output.mp4

開始60秒目から30秒分切り取りしてoutput.mp4 に出力。

 

ffmpeg -i src.mp4 -vf crop=1440:1080:240:0: output.mp4

動画(1920x1080とする)から(x,y)=(240,0) 1440x1080 でトリミングして output.mp4 に出力。

範囲外になる場合失敗する。