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

Wonder Rabbit Projectのなかのひとのブログ。主にC++。

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 ですが、いまひとつ公式ドキュメントでも最低限のエグザンプルとブループリントの情報しかまだ整理されてい…

ブログ移転のお知らせ

移転先 http://blog.WonderRabbitProject.net/

C++ tips: Boost で demangling

RTTIで型情報を対話的に可視化したいと思うと、C++ではデマングルしないと割と読めません。extern "C"しておくとか邪悪臭いですし。 ところがデマングリングは処理系依存に触れる事になるので、ユーザーコードで扱いたいものではありません。そこで処理系依…

Color programming tips with C++ samples: RGB24(16777216色)に対しHSL24は十分な分解能を持っているか?

今回は色の話。PCでは長らく16777216色を誇るRGB24がディスプレイはじめ色を取り扱う際の標準として利用されてきた。RGBなのかBGRなのかなどは今回の本題では無いのでスルーする。また、制限された環境におけるRGB16やRGB15であるとか65536色中同時256色であ…

GCC4.7.1: C++11 と OpenMP のちょっと惜しい関係

C++11から言語仕様のスレッディング周りが強化され、thread、atomic、mutexなどなど言語標準機能として扱える様になり、ちょっとやそっとやそれなりの用途でもintel TBBやBoost.Threadに頼らずにマルチスレッディングソフトウェアを開発し易くなりました。 …

openSUSE: eyefi-config 011.20120712 package released

Link to OBS https://build.opensuse.org/package/show?package=eyefi-config&project=home%3AUSAGI-WRP%3Abranches%3Ahome%3Ajnweiger なに? OBSにパッケージがあった eyefi-config が随分古かったのでbranchして現行最新版のgit-reposより 2012-07-12 版…

Qt5 / Qt Quick 2.0 第3回 続々・はじめたよ : Canvas

続々ですが今回はあっさりと終わっちゃいます。 教材 http://qt-project.org/videos/watch/whats-new-in-qtquick-2.0 32:15くらいから。 概要 Qt5/Qt Quick 2.0でHTML5のCanvasを使うらしい。HTML5のCanvasはもう今更だから解説はしないけど、必要ならこちら…

Qt5 / Qt Quick 2.0 第2回 続・はじめたよ : ShaderEffect

前回に続き、例の紹介ビデオを教材に、25分あたりからのシェーダーエフェクトをざっくり遊んでみる事にしましょう。今回は冗長な解説はせずに初出の事項についててきぱき解説するよ。 教材 http://qt-project.org/videos/watch/whats-new-in-qtquick-2.0 25…

このはてなブログのカスタムCSSについて

これもgithubに置いて管理する事にしました。 https://github.com/usagi/hatena-blog-css さほど頑張ってませんけど、とりあえず。

openSUSE-12.2 / Razor-qt : キーボードのリピート間隔などを簡単に設定する方法

状況 デスクトップ環境にKDE Plasmaを選択すればデフォルトでインストールされるKDEの設定パネルからキーボードレイアウトやリピート間隔を簡単に設定できる。 しかし、Razor-qtにはその様なコンフィグレーションツールが無い。 参考 Razor-qt@github https:…

Qt5 / Qt Quick 2.0 第1回 はじめたよ : ParticleSystem

Qtまじやばい・x・ と、言う訳で先ずは簡単な触りから、この素晴らしく魅力的な世界に入ってみたいと思います。先ずは少し古いですがQt Quick 2.0について、2011年のデモ映像の真似っ子をしてみる事に。 本項の前提知識等 適当なデータ記述言語に関する基礎…

Qt5 / Qt Quick 2.0 はじめるよ

Qtに何故もっと注目して使いこなせる様になって置かなかったかと悔やまれます。 昨年末にとあるでしのお手伝いにとQtをほんの少しですが私も勉強して、C++のライブラリーとしてのQtの様子はなんとなく掴めて居ましたが、それだけでは然程注目を継続したいと…

memo: openSUSE-12.2; systemctl start fam.service が failed するのを解決する

状況 設置仕立てのcourier-imap-sslにthunderbirdで繋いでみたら矢鱈ととんでも無い勢いで Jan 2 03:45:16 LH-SVR5 imapd-ssl: Error: Input/output error Jan 2 03:45:16 LH-SVR5 imapd-ssl: Check for proper operation and configuration Jan 2 03:45:16 …

memo: nginx-1.0.15 + passenger-3.0.12-2.1.2 / openSUSE-12.2

状況 openSUSE-12.2にnginx+passengerを仕込みたい。 準備 rubygem-passenger-nginx zypper se passenger ... など眺めつつ、 zypper if rubygem-passenger-nginx ... を見ると rubygem-passenger-nginx-3.0.12-2.1.2 がopenSUSE標準のリポジトリーにも用意…

memo: yast に firewall が無いと思ったら? openSUSE-12.2

状況 yast ... あれ、firewallの設定ない? 理由 zypper se firewall リポジトリのデータを読み込んでいます... インストール済みのパッケージを読み込んでいます... S | 名前 | 概要 | 種類 --+------------------------------------+---------------------…

memo: install ChiliProject 3.3 to openSUSE-12.2

ChiliProject公式の以下にopenSUSE-11.3へのインストールがまとめられているが、これはやらない。 https://www.chiliproject.org/projects/chiliproject/wiki/Installation_on_OpenSUSE_11_3 最新安定版をbundle使って入れましょう。以下の後半を参考に。 ht…

Qt Quick (QML) の小さなテンプレート

状況 QtCreatorでQt Quick Applicationをテンプレート(C++的な意味ではない)から作成すると、余計な飾り(QMLを扱う為にmainから1つわざわざユーザーコードの薄いラッパーをテンプレが生成して噛ませている)が付いてしまっていて、QMLアプリを試すには少々野…

Google Spreadsheet における indirect のTipsと concatenate の必要性

状況 Google Spreadsheet にて vlookup 等の引数に indirect を用いて別シートの範囲を参照させようとした。 しかし、 sheet1!A1 = "hoge" sheet1!B1 = "fuga" sheet1!C1 = vlookup( B1, indirect( A1 + "!A:B" ) ) こんな感じでは失敗する。 問題の指摘と解…

Qt / qmake / 簡単なリソースファイルの取り扱い方

先の記事のあーうーから、結局自前で簡単なスクリプトを qmake の .pro に書いてみる事にした。 状況 .cxxなどの通常のビルド対象の他に、 .qml とか .png とか .mp3 とかそういう外部リソースファイルがある場合に、 qmake が生成する Makefile でよしなにD…

Qt / qmake / DEPLOYMENTFOLDERS / qtcAddDeployment それは一体は何か?

まったく、下らない事に随分と時間を取られてしまった。1時間程だろうか(´・ω・`) 状況 Vim/zsh系でQtアプリを試していて、QMLを使ったアプリで遊ぼうとしていた。記述するコードは先ずは最小構成、 test.cxx test.qml test.pro テストソースを書いてこの場…

openSUSE-12.2 で .ymp をコンソールから登録する方法

CUIでも software.opensuse.org: Search などから目的のパッケージを探し openSUSE にリポジトリーを登録し yast または zypper したい場合のメモ。 1. .ymp を探す w3m "http://software.opensuse.org/search?q=darkhttpd" darkhttpdにはもちろん自分が探し…

Linuxの小技 sudo su -c command

/sbin のコマンドなんかは sudo で権限だけ昇格してもパスの都合使えない事もある。そんな時は、 sudo su -c command とすると sudo の認証管理で su -c command が実行され、 su はログイン時に /etc/profile を処理するので通常管理者権限のパスも処理され…

C++ vs. C ; R5G6B5 color pixel transform battle

C++ Advent Calendar 2012 - 22 のC++とCのベンチマークについて気になったので少々書く事に。 the topic based from ソフトウエア研究会in秋葉原 - PukiWiki 分り易くて面白い記事なのですが、特にC++とCを比較するベンチマーク部分が少々気に掛かりました…

SUSE Studio とな?

なにやら楽しいおもちゃを知った・w・ Welcome – SUSE Studio どうやら openSUSE 系のマシンイメージをあれこれとカスタマイズして作成できちゃう優れものっぽい!unboundが…とか一部パッケージについて綺麗に対応しきれない点はあれど、面白いかな。…いや…

openSUSE Build Service に darkhttpd パッケージを作ってみた

openSUSEでのパッケージの探し方も心得られてきた。 software.opensuse.org: Search 基本的には↑で探す。そしてどうやら↑はarchlinuxで言うところのAUR、Ubuntuで言うところのPPAとかそんな雰囲気が漂っている。恐らく必要なら私もパッケージをメンテナンス…

gistで「そうだ、Fedora17KDEを入れよう・x・ 」を公開

gistに、 ある日のうさぎせんせいのFedoraメモ。もしかしたらこそこそ更新するかも。 はじめてのFedoraでC++環境を整えて素敵な開発ライフを楽しもうかな、そんな事をなぜかふわりと思っているとあるIT系女子へのヒント。 と言った具合の文書を公開しました…

Boost.MultiArray メモ

std::valarrayだと基本的には1次元のデータ構造に対してスライスを考えて多次元要素集合としてアクセスする事になる。Boost.MultiArrayなら基本的には多次元のデータ構造に対して必要ならば1次元のRAWなデータ構造も用いる事ができる。多くの場合は後者の方…

openSUSE-12.2 + Packman

openSUSEを入れた後、ソフトウェアリポジトリーがやや微妙とか言ってたら「Packmanを追加してあげて!」みたいに教えて頂いて居た事をふと今更思い出した。 PackMan :: Startseite 実は archlinux から openSUSE に変えた事もあり、しばらくの間は archlinux…

openSUSE-12.2 に OGLplus を導入

OpenGL3以上のCなAPIをC++らしく扱う為のライブラリーOGLplusをopenSUSE-12.2に導入する。 OGLplus - a C++ wrapper for OpenGL® version 3 and higher. zypperに対応したパッケージは無いので普通にソースを拾ってビルドしてインストールする。 OGLplus ソ…

openSUSE-12.2 + Razor-qt

@usagi_wrp RazorQT もお試しあれ(既に言っていたらすみません— Fuminobu TAKEYAMAさん (@ftake) 12月 12, 2012と、言う訳で Razor-qt 入れてみました。初期状態で気に入らない事と言えば、キーリピートの待ちが長い事と、PrintScreenキーに割り当てが無い事…

cpp_ac_2012_4th の particle_system そのもののベンチマーク; time, gprof, oprofile

Related Entries C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the web-client-world! - C++ ときどき ごはん、わりとてぃーぶれいく☆ After care: C++ Advent Calendar 2012 / day 4th : Native-client vs. HTML5 ; C++ in the …

QtCreator-2.5.0 + QtOpenGL + GLUT ==> teapot

(いちおう)エディターたるVimから、IDEたるQtCreatorでの開発を勉強中。先ずはお約束の第一歩、teapotの備忘録。 プロジェクトをQtの雛形から作成 File --> New file or Project (CTRL+N) Projects: Applications --> Qt Gui Application 以降、仮にプロジ…