#じゃべめも

じゃべめも棚卸し

パーリンノイズ

地形生成に使えそうななだらかなノイズ Perlin Noise フラクタル地形自動生成

バリューノイズ

ランダムな値の間を補完して作るノイズ 基本的に、線形補完に渡す割合の値を、こねくり回してる感じ

線形補完

aまで移動後、a-b間のx%を追加で移動

def liner(a, b, x)
  a + x * (b - a)
end

コサイン補完

線形補完に使っているx%を、コサインを使って作る。 ラジアンが0〜PIの時、コサインは-1〜1なので、1から引いて0〜2にする。 これを半分にして距離の割合(x%)を作る

def cosine(a, b, x)
  ft = x * Math::PI # 0〜1を0〜PIのラジアンへ変換
  f = (1 - Math.cos(ft)) * 0.5
  a + f * (b - a)
end

パーリン先生の補完(?)

ノイズの話 - Pentanium Blog? 補完の割合をf(t) = 6.0*t^5-15*t^4+10*t^3に食わせると いい感じに滑らかになる魔法

def parlin_interpolate(a, b, x)
  # 
  f = x * x * x * (10.0 + x * (-15.0 + 6.0 * t))
  a + f * (b - a)

Rubyで模様生成機

tracpath.com

ランダムで模様作るよ

前提:

gem install geo_pattern --no-ri --no-rdoc

gem install color

require 'webrick'
require 'geo_pattern'

random = Random.new(20)
server = WEBrick::HTTPServer.new({:BindAddress => '0.0.0.0', :Port => 3000})

trap(:INT){server.shutdown}

server.mount_proc('/') do |req, res|
  range = 0.0..1.0
  col = Color::RGB.from_fraction( random.rand(range), random.rand(range), random.rand(range) )
  pattern = GeoPattern.generate(col.html, patterns: :plaid, base_color: col.html)

  content = "<div style=\"background-image: #{pattern.to_data_uri};min-height:768px; width:1024px;\">"

  res.body = content
  res.content_length = content.size
  res.content_type = "text/html"
end

server.start

3Dオブジェクトを使った2Dゲームのレイヤー実装

SpriteRendererだけを使う場合は、SortingLayerでレイヤーを実装する。
ただ、MeshRendererにはSortingLayerが無いので、描画順の制御が上手く行かなかったりしてた。

MeshRendererを織り交ぜてレイヤー表現する場合は、カメラを複数使って実装するのが、汎用的で良い

背景カメラ、メインカメラ、前景カメラ、みたいな塩梅

 

オブジェクトをどのカメラに写すのかは、各オブジェクトのLayerとカメラのCullingMaskで操作する

 

*カメラのDepthを変更して、描画順を決定するのだけど、-10とかにすると何故か描画されなくなるので、
最背面を0スタートの正数で実装するのが良さそう

アニメーション管理での親子管理例

 

Windows Subsystem for Linux 入れてみる

Windows Subsystem for Linux を有効化
Microsoftストアからubuntuをインストール

/mnt/c/にWindowsのフォルダ一式があるので、ここから開発フォルダに移動して rubyとか触ればよいと思う

 (MicrosoftStore使うのは盲点だった・・・)

 

rbenv経由でrubyのインストール

qiita.com