C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

2017-01-01から1年間の記事一覧

Microsoft の VSTS の SSH 接続時の URL が変更されたらしい

private で大きめなファイルも含むプロジェクトを扱う場合は GitHub や BitBucket よりも最近では VSTS が便利なので UE4 のプロジェクトなどに使っています。今日、 git push をコンソールでしたところ、次のメッセージを確認しました。 remote: **********…

UE4のエンジンアップデートで調整済みのBPを消し飛ばしてしまった備忘録

UE4で開発中に編集するコンテントにはプロジェクトごとに管理されるユーザー定義のソースやブループリントやマテリアルの他に、エンジンのコンテントを参照するものが含まれる事があります。例えば、 BP_Sky_Sphere とか。 今回のやらかした記録はそのUE4の…

カメラで撮影した .MOV を Adobe Premiere で .mp4 にしても Instagram へ投降すると「動画をレンダリングできません」となる場合の対処方法

状況と経緯 小松空港と新千歳空港を往復する際に、 OLYMPUS OM-D E-M1 Mark II で離陸と着陸の動画を窓から撮影しました。そのままだと離陸も着陸も10分ほどの動画で眺めるにも少々長く、 Instagram へ投降するにも 60 秒に調整する必要があるため Adobe Pre…

ダーク・エクセル

白い画面は眩しくて疲れます。 Microsoft Excel をダークなテーマで使いたいニーズはそれなりにあると思います。簡単な方法は無いだろうと諦めていたのですが、いつの間にか簡単にダーク・エクセルを実現できるようになっていたようです。 この状態にする手…

UE4: 4.16 から 4.17 へアップグレードした際に遭遇した諸問題と解決について

4.16で開発していたプロジェクトを4.17へアップグレードした際に遭遇した問題と解決方法を整理します。 問題と解決方法 1. 4.15 向けのプラグインがビルド不能に陥った レベル内の重力を器用に扱いたい場合に便利なプラグインとして CustomGravityPlugin (…

UE4/C++: アクターのメンバー関数内で AActor 派生の任意のユーザー定義型のオブジェクトを列挙する方法

// TActorIterator で AActor 派生の任意のユーザー定義型のオブジェクトを列挙 // AHogePawn は列挙したい AActor 派生のユーザー定義型 // GetWorld() は AActor のメンバー関数 { auto counter = 0; for ( TActorIterator< AHogePawn > i( GetWorld() ); …

UE4/C++: メッシュのマテリアルやテクスチャーをC++コードで制御する方法

要点を整理しようと思ったらソースの例示しかない記事になりました(ノω・)テヘ // マテリアルをロードしてメッシュへ設定する // mesh: UPrimitive またはその派生型( UStaticMeshComponent, UProceduralMeshComponent など)のポインターオブジェクト // elem…

Boost-1.65 の PolyCollection, Stacktrace, Sync の概要を確認

Boost-1.65 から3つの新しいライブラリーが入るらしいので概要( Introduction )を確認したメモ。 Chapter 28. Boost.PolyCollection - develop Chapter 38. Boost.Stacktrace 1.0 - develop http://www.boost.org/doc/libs/develop/libs/sync/index.html (…

UE4/C++ Tick が来ない!そんなときのトラブルシュート備忘録

「Tick が来ない!」、たまによくあるのは私だけでしょうか。 UHogeFugaComponent の TickComponent が来ない、 AHogeFugaActor の Tick が来ない、などなど。そんな場合の備忘録です。 疑い(1): bCanEverTick が false コンストラクター等で bCanEverTick …

UE4/C++ Interface の作り方

おさらい: ふつうの C++ の “インターフェース"(=抽象型) C++er 的には virtual なメンバー関数に =0; 定義を入れた Abstruct な class ( or struct ) を作れば広義のプログラミング言語の意味での Interface になるって思うじゃん・w・ // ふつうの C++…

UE4 の UCLASS の定義の基底クラスに名前空間を使っている子が居る場合の不幸と安直な回避策について

現状の UE4 で C++ の namespace を使おうと思っても面倒事が増えるだけなので、現実問題としてはわざわざ UE4 の C++ コードを記述するに当たっては namespace を用いないほうが賢い。少なくとも UE-4.16 現在は。 しかし、そうは言っても、世の中の素敵な …

UE4 における enum class の「フラグ」化

// ↓ブループリントで使わない場合はこの1行は不要 UENUM( BlueprintType, meta=( Bitflags ) ) enum class EHoge: uint8 { EV_Nothing = 0 , EV_Flag1 = 0x01 , EV_Flag2 = 0x02 , EV_Flag3 = 0x04 , EV_Flag4 = 0x08 , EV_FlagAll = EV_Flag1 | EV_Flag2 |…

UE4: C++er 視点での実行中の AActor への USceneComponent の動的なオブジェクトの実行中の生成、レジスター、アタッチ、デタッチ、アンレジスター、破棄の方法

状況 (½) おさらい編: AActor::AActor (アクターのコンストラクター) で生成する場合 // .h UHogeComponent* HogeComponent; // .cpp AActor::AActor() { RootComponent = CreateDefaultSubobject< USceneComponent >( TEXT( "RootComponent" ) ); HogeCom…

UE4/C++ FORCEINLINE にしたいけど Debug ビルドの時は inline 最適化されたくない関数を定義する方法、あるいは UE_BUILD_xxxx シリーズのマクロについて。

UE4/C++ FORCEINLINE にしたいけど Debug ビルドの時は inline 最適化されたくない関数を定義する方法 #ifndef UE_BUILD_DEBUG FORCEINLINE #endif void hogehoge() { /* fugafuga */ } と、いうわけで #ifdef でOK。 Debug ビルドで定義される UE_BUILD_DEB…

続・ VSCode で UE4 デバッグの launch.json: DebugGame と Development の切り替え追加と違いについて

概要 前回のポスト「VSCode で UE4/C++: デバッグ実行に必要な launch.json の設定の仕方 - C++ ときどき ごはん、わりとてぃーぶれいく☆」で VSCode の launch.json を設定して UE4 のデバッグ実行を VSCode から"えせ"スタンドアローン風に実行する方法を…

VSCode で UE4/C++: デバッグ実行に必要な launch.json の設定の仕方

概要 VSCode で UE4/C++ を開発する際にデバッグ実行に必要な launch.json の設定方法を紹介。 ↑こんな感じで VSCode しか起動していない状態から"えせ"スタンドアローン風の実行もできる。もちろん、起動中の UE4Editor へのアタッチもできる。 VSCode の設…

曰く「Project.uproject を右クリックして Generate Visual Studio project files」・・・そんなのダルい!今すぐ端末でコマンドを撃たせろ!!って思ったらどうすれば良いか・w・

問題 UE4 C++er は .cpp を追加したりリネームするたびに「Project.uproject を右クリックして Generate Visual Studio project files」しなければならない、事になっている(目につくドキュメントや AnswerHub 的なスタンダードな回答によれば)。 だるい・…

Visual Studio 2017 を日本語でインストールした後で English に変更する方法(UE4の文字化け嫌だしー)

状況 Visual Studio 2017 の cl.exe のメッセージを English にしたい。 “googlability” や “stackoverflowability” や “ue4-answerhubability” 的な都合でも合理的だし、 UE4 の UE4Editor から C++ コードをビルドした際に問題が生じた場合に UE4Editor の…

C++ 標準の promise / future / thread に対応する UE4 標準の TPromise / TFuture / FRunnableThread の使い方

C++ 標準の std::promise / std::future / std::thread C++erにとっては基礎的なおさらい。 #include <iostream> #include <future> int main() { using namespace std; promise< int > p; auto f = p.get_future(); auto t = thread( [ =, p = move(p) ] () mutable { p.set_v</future></iostream>…

UE4 プロジェクトを git で管理する際の remote origin の選択について

あちこちのサービスを試す事はあっても、結果的には git リポジトリーの remote origin は基本的にはなんでも GitHub を使っていました。しかし、 GitHub だと 100 MB を超えるファイルを少なくともそのままでは放り投げられないのでちょっと工夫とか面倒が…

UE4 のコンソールにユーザー定義のコマンドを追加する方法

テンプレプロジェクトでは @ キーででてくる便利なコンソールにユーザー定義のコマンドを追加する例: // MyActor.h // ... public: // コンソールから呼びたい UFUNCTION の宣言 UFUNCTION( BlueprintCallable ) void hoge(); // ... AMyActor::AMyActor() {…

地上を歩けて、空も飛べるキャラクター( ACharacter )の C++ な作り方

C++/TPSのテンプレプロジェクトを作ってソースを眺めると「地上を歩けるキャラクター」の作り方がわかります。そこで、追加要素として「この ACharacter を空も飛べるようにしたい」と思っても、エディターで “Can Fly” をチェックONするだけではまったく飛…

UProceduralMeshComponent などの UMeshComponent のマテリアルを実行時にC++で変更する方法

特に UProceduralMeshComponent を使う場合など UMeshComponent 系のメッシュ mesh のマテリアルを実行時に変更したい場合は以下のようにする。 mesh->SetMaterial ( 0 // Note: マテリアルをセットしたいメッシュ内のセクション番号 , Cast<UMaterial> // Note: 今回は</umaterial>…

UProceduralMeshComponent::UpdateMeshSection_LinearColor で一部の引数(頂点属性)だけ更新する方法

以下のコードの結果は同じです・w・ // code-1 ... mesh->CreateMeshSection_LinearColor ( 0 , vertices , indices , normals , texcoords0 , vertex_colors , tangents , true ); // code-2 ... mesh->CreateMeshSection_LinearColor ( 0 , vertices , in…

UE4: ProceduralMeshComponent 入門

はてなブログよ、わたしは帰ってきた・w・ と、いうわけで早速本題に入りましょ。 UE-4.14 から導入された事になっている ProcedualMeshComponent ですが、いまひとつ公式ドキュメントでも最低限のエグザンプルとブループリントの情報しかまだ整理されてい…