Tri-planar mapping

Quick Game Art Tips – Unity Triplanar Terrain Shader
https://www.patreon.com/posts/16714688

2DテクスチャをUVを使わずに投影するTri-Planar Texture Mapping
https://qiita.com/edo_m18/items/c8995fe91778895c875e

ARNOLD triplanar
https://docs.arnoldrenderer.com/display/A5NodeRefJPN/triplanar?desktop=true&macroName=multiexcerpt

Projective Texture Mapping
http://www.cse.unsw.edu.au/~cs9018/readings/projective_texture_mapping.pdf

Tutorial 43: Projective Texturing
http://www.rastertek.com/dx11tut43.html

Ubuntu Command 覚え書き

# ファイル検索
locate libc.so

# mac の open コマンド
xdg-open .

# 拡張子無しのファイルを調べる
file tilix

# コマンドの場所を調べる
whereis ls

Ubuntu メモ

# iterm のようなターミナルソフト
Tilinx (apt でインストール可能)

# デスクトップ表示
Control + Command(win) + d

# 複数アプリ切り替え
Option(alt)+tab

# Qt での GUI
https://vitux.com/compiling-your-first-qt-program-in-ubuntu/

# Ubuntu で OpenGL
http://www.codebind.com/linux-tutorials/install-opengl-ubuntu-linux/

GUI アプリ開発の不明点

ubuntu 18.04 でのGUIアプリ開発の手段と動作の仕組みが良くわからない。ubuntu 18.04 のデスクトップ完了は GNOME 3 で、

Houdini ツール系ネタの参考

Houdini Tutorials
https://www.sidefx.com/tutorials/

Game Tool
https://www.sidefx.com/learn/game-tools/

Houdini Game Dev Toolの更新情報
https://support.borndigital.co.jp/hc/ja/articles/360000559302-Houdini-Game-Dev-Tool%E3%81%AE%E6%9B%B4%E6%96%B0%E6%83%85%E5%A0%B1-2019-09-27-

【Houdini】のためのスタンドアローンなツールを作ろう。
https://dftalk.jp/?p=20869
Houdini 15 のため若干古いが参考になります。

Houdini Engine API入門
https://qiita.com/jyouryuusui/items/3d86ab8e69652d5f951c
今の所、日本語で一番詳しい Houdini Engine の説明だと思う。

HOMの紹介
https://www.sidefx.com/ja/docs/houdini/hom/intro.html
ぱっと、Houdini Python にアクセスしたい場合に便利

Numpy での ベクトル処理

import numpy as np

a = np.array([1.0, 2.0, 3.0])
b = np.array([4.0, 5.0, 6.0])

a = a / np.linalg.norm(a)
b = b / np.linalg.norm(b)

np.dot(a, b)
np.cross(a, b)

面法線の求め方

import numpy as np

v0 = np.array([0.0, 0.0, 0.0])
v1 = np.array([0.0, 0.0, 0.0])
v2 = np.array([0.0, 0.0, 0.0])

t0 = v1 - v0
t1 = v2 - v0

n = np.cross(t0, t1)
print(n)

外積はかける順番で結果が異なる(法線の方向が逆を向く)ので注意。

下記記事を参考にさせて頂きました。素晴らしい記事をありがとうございます。
https://deepage.net/features/numpy-dot.html

Matplotlib 覚書

普通に画像を表示させるだけであれば、下記で表示出来る。

import matplotlib.pyplot as plt
plt.imshow(decoded_img[0].reshape(28, 28))

下記の表記でサイズが 20, 5 の新規領域を作り、(2, 10, i+1) で、2行10列ごとにサブプロットで領域を分割している?

n = 10
plt.figure(figsize=(20, 5))
for i in range(n):
    ax = plt.subplot(2, 10, i+1)
    plt.imshow(x_test[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)

    ax = plt.subplot(2, 10, i+1+n)
    plt.imshow(decoded_img[i].reshape(28, 28))
    plt.gray()
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
plt.show()

git command 覚書

リモートの branch 情報の取得
git branch -a

ローカルのいらない branch の削除
git branch -D origin/4.17

リモートブランチの取得
git fetch (fetchしないとローカルで branch ができる?)
git checkout -b remotes/origin/4.17

ローカルだけにあるファイル・フォルダを削除
git clean -fd

更新を元に戻す
git checkout .

git clone -b origin/4.17 https://github.com/EpicGames/UnrealEngine.git

Metal Raytracing のサンプルプログラムの中でキーボードを使用する

Apple が提供している、Metal Raytracing サンプルの中でキーボードを使用したかったのですが、mac (Objective-C) 用のプログラムでのキーボードの扱い方が分からずに解決に苦労したので、自分用に対応した内容のメモです。


まず、MTLView を継承して GameView という名前の .h と .mm を作成する。

#import <Cocoa/Cocoa.h>
#import <Metal/Metal.h>
#import <MetalKit/MetalKit.h>
#import "Renderer.h"
@interface GameView : MTKView
#import "GameView.h"
@implementation GameView
- (void)keyDown:(NSEvent *)theEvent
{
    switch (theEvent.keyCode)
    {        
        case 0x12: [self._renderer Press1]; break;
        case 0x13: [self._renderer Press2]; break;
        case 0x14: [self._renderer Press3]; break;
        
        case 0x00: [self._renderer PressA]; break;
        case 0x01: [self._renderer PressS]; break;
        case 0x02: [self._renderer PressD]; break;
        case 0x0D: [self._renderer PressW]; break;
        
        case 0x0E: [self._renderer PressE]; break;
        case 0x0C: [self._renderer PressQ]; break;
        
        case 0x7C: [self._renderer PressRight]; break;
        case 0x7B: [self._renderer PressLeft]; break;
        
        default:
            NSLog(@"keyDown:'%@' keyCode: 0x%02X", theEvent.characters, theEvent.keyCode);
            break;
    }
}
- (BOOL)acceptsFirstResponder
{
    return YES;
}
@end

作成した上記コードを Main.storyboard の Game View Controller Scene -> Game View Controller -> View の中の Custom Class で設定されている MTKView から GameView に書き換える。

そうすれば、作成した GameView の keyDown 関数内で、キーボードのイベントを取ることが出来ます。

NVIDIA PhysX のオープンソース化

NVIDIA PhysX SDK
https://developer.nvidia.com/physx-sdk

NVIDIA 物理シミュレーションエンジン「PhysX」をオープンソース化
https://www.4gamer.net/games/022/G002233/20181204012/

PhysX って以前からオープンソース化されていましたけど、今まで private リポジトリで申請が必要だったのが public で公開されたみたいです。

Game Physics on the GPU with PhysX 3.4
NVIDIA PhysX SDK 3.4.0 Documentation