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

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

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

UE4/C++, Blueprint: UAsyncTaskDownloadImage を拡張した実装を使いたい場合にリンクが必要となる RHI と RenderCore のメモ

状況 UAsyncTaskDownloadImage はブループリントでは癖の強めの非同期処理ノード。何かを For などでループしながら DownloadImage ノードを使い OnSuccess にテクスチャーデータだけでなく何らかのインデックスなどの付加情報を引っ掛けた処理を行わせよう…

UE4/C++,Blueprint: BPへ関数のパラメーターを参照だけど入力としてノードを与えたい場合にどうするか

問題 UFUNCTION( BlueprintCallable ) static void Something1( FVector& VR , const FIntVector VC ); このような UE4/C++ で生成される Blueprint ノードは、 VC を入力ピン、 VR を出力ピンにしてしまう。 VR も入力ピンの意図で実装した場合に Blueprint…

UE4: Camera の GetActorLocation で得られる位置と1フレームの Tick の中のタイミングのメモ

状況例 「サードパーソンテンプレートのようなプロジェクトを作り、プレイヤーキャラクターとカメラのちょうど中間に何かしらアクターを移動させたい。」 実装手順 中間の位置に出したいアクターの Blueprint へ次のように実装する。 おそらく遭遇する問題 …

UE4/C++: Stats ( Profiler ) 機能の組み込みと使い方メモ

Runtime/Core/Public/Stats/Stats.h で宣言・定義される Stats ( Profiler ) 機能を C++ コードに仕込んで UE4Editor のプロファイラーでお手軽に負荷など調べる方法のメモ。 仕込み // MySourceFile.h #pragma once #include "CoreMinimal.h" // 略 // MySo…

UE4: PS4 の DualShock4 コントローラーを Windows PC に Bluetooth 接続して UE4 の Input で使う方法

1. PS4 DS4 を Bluetooth で PC に接続 DS4 を SHARE + PS の同時長押しで Bluetooth ペアリングモードにする このモードになるとインジケーターがピピッ的に断続的に発光する状態になる Windows PC の設定 "Bluetooth & other devices" からペアリングする…

UE4/C++: DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam と TArray

問題 C++ コードの実装に DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam マクロを使い、パラメーターに TArray を入れて Delay (Blueprintノード右上に時計マークの出るアレ)を経て結果を処理できる非同期動作のデータのジェネレーターを UE4 の勉強と練習…

MHW, STEAM: モンスターハンターワールドSTEAM版のユーザー視点からの観測とTips

モンスターハンターワールドのSTEAM版、7月のうちにお布施のつもりで購入してありました お布施のつもり、というのは PS4 版で既にトロフィーをコンプリートしてエンドコンテンツも全て楽しく遊ばせて頂いてしまっている状態で、事前からどうもセーブデータ…

rust, windows: crate gdal を windows, vscode 環境で使用可能にするメモ

こんかい使えるようにする対象物 Rust crates.io gdal https://crates.io/crates/gdal GDAL https://gdal.org/ crate gdal は内部的に元のGDAL(の動的リンクライブラリー)を呼びつけて GeoJSON を読んだりできるラッパータイプのライブラリー。 extern cra…

USB, Switch: やはりスイッチや計器の類は「機械式」で単機能のシンプルなものが好い!

昨日届いて郵便受けに入っていた「機械式」で単機能なUSB切り替え器がこちら。 amazon で 798 円で購入、中国からの発送で北海道札幌まで7日間でした。一緒に USB Type-A / Type-B 変換コネクターも2つ購入。どちらも郵便行けにいつの間にやら届いていました…

rust: Cities Skylines 向けの地形ジェネレーターツール "Cities Heightfield from GSI" を Rust で作り直したはなし

今回は「はなし」記事です。若干技術的な内容も含まれますが、基本的には随筆のようなものです。 github: https://github.com/usagi/cities_heightfield_from_gsi crate: https://crates.io/crates/cities_heightfield_from_gsi ↑このアプリを Rust で作り直…

rust: 任意の Primitive, struct, Vec<T> などのメモリーイメージを Vec< u8 > (≃ &[ u8 ] ) なバイト列として取得する方法

// for rust-1.27.2(stable) use std::mem; use std::io::Write; fn main() { { // f64 (primitive) -> Vec< u8 > let f = 1.0f64; let view = &f as *const _ as *const u8; let slice = unsafe { std::slice::from_raw_parts( view, mem::size_of::< f64 >…

rust: rust-0.9 あたりからおよそ4年ぶりに rust-1.29 を使ってみる(開発環境の準備)

終末にちょっとしたツールを作ろうかと思い、もののついでに rust の知識をアップデート…というより再学習して遊ぼうかと思いました。 4年前に遊んだ記憶 rust-0.9 が最後に手元で遊んだ頃の rust だった覚えがある ユーザーとして簡単な何かを作れそうなコ…

UE4/C++: http(s) リクエストに FHttpModule 系を使う場合の OnProcessRequestComplete/FHttpRequestCompleteDelegate の成否フラグの注意どころ

UE4 の FHttpModule の OnProcessRequestComplete / FHttpRequestCompleteDelegate には若干、罠どころがある // UE4/C++ でフレームワークに用意された方法で HTTP リクエストを発行し、 // HTTP レスポンスを得て何かしたい場合のコード例 auto http = &FH…

UE4/C++: TArray 夏の怪談💀 AllocatorInstance が nullptr の巻

怪異 ↑キャッチーな画像という事ではなくて、実際にこういう事が「うっかり」で起こるので気をつけたい、という怪談です 冒頭のスクリーンショットは UE4 の Array.h ( TArray )の ResizeTo メンバー関数が呼ばれた際に AllocatorInstance メンバーが null…

PS4PRO: USB ストレージへバックアップしようとしたら エラー CE-32539-2 が発生して一悶着あった話

PS4 バックアップ エラー CE-32539-2: 発生 PS4PRO の標準 1TB HDD を Crucial MX500 1TB SSD に換装するため、 PS4 のバックアップと復元の機能を用い、 A-DATA UV131 64GB USB ( USB メモリー )ストレージへバックアップを行おうとした。 1回目: 購入し…

UE4/C++ で lambda-expression なタスクをお手軽に非同期処理に投げる方法

// 最小限のコード例 // グラフの意味はさておき、単発のタスクを // とりあえずなんでもよいのでUE4のタスクプールに投げたい場合はこれだけでも動作する FFunctionGraphTask::CreateAndDispatchWhenReady( []{}, TStatId(), nullptr ); // 解説用に関連し…

UE4/C++: UMaterialInstanceDynamic を生成したり UPrimitive 的な何かにセットしたりするコードスニペット的なメモ

// ぱたーん1: マテリアルインスタンスダイナミックを複数の何かのマテリアルとして使いまわしたい場合 // 1.1. AActor 系のどこかなどで、とりあえずマテリアルインスタンスダイナミックをマテリアルアセットから作る: auto m = UMaterialInstanceDynamic::…

UE4 Plugin: SVG Importer Plugin

概要 UE4 で SVG をテクスチャーで扱いたかったけれど、 svgpp など使ってちまちま実装するよりも $19.99 で SVG Importer Plugin を買った方が楽そうだし、マーケットプレイスでも ☆5 が幾つもついているので試してみようかな、と思い試してみた記録。 SVG …

UE4-4.19 で Material Layers を試用する手順

概要 従来の UE4 では「マテリアルのレイヤーブレンド機能」=「マテリアル関数の合成機能」でした。4.19以降で試験実装された "Material Layers" を使うと「マテリアル関数」ではなく、新たなアセットとして追加される「マテリアルレイヤー」と「マテリアル…

UE4/C++: 4.18 以降発生するクリップボードのAPI仕様変更に伴う警告と必要な修正

状況 FGenericPlatformMisc::ClipboardCopy または FGenericPlatformMisc::ClipboardPaste を使用している場合、UE4-4.18 以降で API の仕様変更に伴う警告が翻訳時に発生する。 warning C4996: 'FGenericPlatformMisc::ClipboardCopy': FPlatformMisc::Clip…

UE4/C++: 4.18 -> 4.19 エンジンアップデートトラブル; `UMaterialInstance::GetVectorParameterValue` の仕様変更と "Material Layers"

現行プロジェクトに必要なプラグインの 4.19 対応も進んできたので、手元のプロジェクトを 4.18 から 4.19 へエンジンアップデートしてみました。エンジンの仕様変更によるトラブルがあったので対処方法と併せて紹介します。 4.18 -> 4.19 における UMateria…

UE4/C++: JSON/XML/portable-binary 等の汎用シリアライズライブラリー cereal に UE4 の各種型を非侵入型アダプターで対応させるライブラリー cereal-UE4 を公開しました

cereal-UE4 GitHub - usagi/cereal-UE4: cereal ( C++ serialization library ) adapter for UE4 ( Unreal Engine ) types cereal について https://uscilab.github.io/cereal/ 近年モダンな C++er にしばしば使われていると思われる JSON / XML / Binary ( …

UE4: std::unordered_map だと少し面倒だけど TMap なら簡単にできる Key の書き換え

// てきとーな TMap TMap< FString, int32 > m; m.Add( "hoge", 123 ); m.Add( "fuga", 234 ); m.Add( "piyo", 345 ); // マップの対を逐次参照で列挙しつつ Key を書き換える for ( auto& p : m ) p.Key = p.Key .Replace( TEXT( "g" ), TEXT( "G" ) ) .Rep…

UE4: バイナリー配布や実行時リンク向けのライブラリーを UE4 プロジェクトへ組み入れる方法を mecab で解説

概要 UE4 のプロジェクトの C++ コードへ UE4 とは特に関係の無い一般のライブラリーをリンクするのは少々面倒な事がある。ヘッダーオンリーなライブラリー、例えば Eigen や stb あるいは Boost の一部をリンクするような場合は困らない。しかし、バイナリ…

UE4: Blueprint 向けに WorldContextObject が必要な機能を提供する際に暗黙的に WorldContextObject を扱わせられるように C++ コードで対応する方法

概要 状況の例として、 Blueprint へ特定のアクターを引っ張り出させる次のような実装を提供したいとする。 設計上必ず1つ AMySpecialActor が配置されていて、 // 定義はどうあれ、どこかに定義され1つだけは常に配置される AMySpecialSomething アクター U…

UE4: Blueprint 向けに提供する C++ 関数を pure に定義するメモ

1. AActor などの派生型でメンバー関数を pure にしたい場合 UFUNCTION で BlueprintCallable フラグを付けたメンバー関数を const 定義すれば自動的に blueprint でも pure になる。 2. UBlueprintFunctionLibrary 派生型の static メンバー関数を pure に…

UE4: スクリーンサイズ可変に対応したスクリーン座標へのUMGの表示のブループリント備忘録

アクターのロケーションなど適当な World 座標を基準にHUD風にUMGを表示したい場合、 World 座標から ConvertWorldLocationToScreenLocation で得られるスクリーン座標をそのまま Set Render Translation へ放り込むとスクリーンサイズ可変の場合には実際の…

UE4: FHttpModule 系の HTTP リクエスト機構を使い "同期処理" する方法

概要 UE4 で HTTP リクエストを飛ばしたい場合、 HTTP モジュールを有効化し、 FHttpModule::Get で得たオブジェクトから FHttpModule::CreateRequest し、 IHttpRequest のプラットフォームのオブジェクトを得て URL 等の必要なリクエストパラメーター及び …

キーボード: Azio Retro Classic Posh

美しいキーボードというのも魅力的なもので、 Azio Retro Classic Posh を Makuake で購入していたものが昨年末に届き、数日間使ってみた。 タイプライターの「カチッ」を再現。ヴィンテージ感溢れる高性能キーボード。 | クラウドファンディング - Makuake…