2019年9月

2019年9月26日 (木)煩悩を捨てる

おはようございます。
暦の上ではもう秋ですが、まだまだ暑い日があったり、なかったりとせわしない天気が続きますね。
暑いのが苦手なので早く冬になってほしいプランナーのM・Oです。

私事ですが、つい先日広島・宮島旅行に行ってきました。
宮島は初めてですが、広島は学生のとき以来になります。
今回は世界遺産を巡るというのをテーマとして「原爆ドーム」や「厳島神社」に行きました。
また、リニューアルされた「平和資料館」にも行き、以前来たときより新しく展示されたものが沢山ありましたので、2回目でも改めて学ぶことができました。

宮島では主に「厳島神社」や「大聖院」を観光していたのですが、昔ながらの建物と自然が溢れる場所で、一歩建物を出ると野生の鹿がうろうろしている、珍しい光景も見られます。

Img_20190925_01

「厳島神社」といえば某ゲームのキャラクターが記念奉納の舞をした場所ということもあり、聖地巡礼の気分で写真を撮っていました。
朝早く行ったので人も少なく、海に浮かぶ大鳥居をゆっくりと見ることができました。
そして、記念に厳島神社でおみくじを引くと「向吉」という謎の文言。
調べて見ると「吉に向かう」という意味で小吉~中吉の間らしいです。
幸先のよいおみくじを引けて、意気揚々と巡ることができました。

Img_20190925_02

「大聖院」ではオリジナルの数珠を作れるということで、ゲームの推しキャラをイメージした色の数珠を作成しました。
キャラクターのファンの中には、自作のグッズを作って応援する人もいますが、不器用で推しグッズなど作れない私でも作れたし、数珠は普段使いできるので、本当に良いものが作れたと思います。

また、穴めがけて玉を投げ入れると願いがかなうという「願い玉」に挑戦しました。
私はひたすら「ガチャ運くれ・・・ガチャ運くれ・・・・!!!」と怨念のごとく願っていました。
ちなみに玉は見事に1球目で入ったので「これはなんでもいけるんじゃないか」と思っていました。
ですが、ここは願いを叶える万能の場所ではなく、あくまで神社仏閣なので「煩悩」を捨てろという教えがいくつも書いてありました。

はい皆さん、このあとの展開お分かりですね?

煩悩にまみれ、謙虚に敬う心を忘れた私に罰が下りました。
坂でド派手にこけてズボンが破れるくらいの怪我をしました。
そして、ガチャを引いても目当てのキャラは全くでないという・・・。

煩悩を捨てて謙虚な気持ちでいるということはとても大切な事ですね。

この広島・宮島旅行では、本物の「戦争の悲惨さ」に触れて、改めてゲームクリエイターとして様々な世界を描くなかで何かできないかを考えるきっかけになりました。
そして、何事にも謙虚に向かう気持ちが大事ということも学びました。

たまにはゲームから離れて、様々なところに足を運びリアルな体験をするのが大事ですね。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2019/09/post-1045a7.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0)

2019年9月19日 (木)セッション

おはようございます。
営業部 東京オフィスのM.Iです。

私、楽器演奏が趣味で、お休みの日はセッションやライブに勤しんでおります。
ライブは言わずもがなですが、セッションというのはコード進行だけ決めてジャムセッションするものや、曲を決めて演奏者を募集し、演奏者が揃えば合奏するものもあり、私が参加しているのは主に後者です。

参加する演奏者も年齢、職業、育った国もバラバラ、考え方も常識も違う人が集まって1つの曲を演奏するので、まあ、うまくいかないことも多いです。

私はあまり演奏がうまい方ではないので、達人の胸を借りて楽しくやらせて頂いていますが、達人は演奏する曲はもちろん、バンドの歴史、元奏者の手癖の研究、一緒に演奏する人のスキルに合わせて、進行を間違えた場合のリカバリ案まで考えているそうです。
達人ほどではありませんが、私も出来る限りの準備をして本番に臨みます。
その日の気分で出音も変わりますし、一人で演奏するならともかく、人と合わせて演奏するので、まさに、音の出る前の空気の振動を感じてセッションするのです。

ですが、闇雲にただ楽しめた時期は突然終わりを迎えました。
セッションイベントに参加するようになって、しばらくはそれなりに楽しかったのですが、急に演奏の違和感が耳についてしまい、なんだかしっくりこなくなってしまったのです。
やはり、自分の理想の演奏をしようと思うと、相応のスキルが必要なんですよね。
セッション中は常にお酒を嗜んでいるのもあり、気づくのに数年かかりました…笑

その時はいかに自分の演奏が駄目だったを思い知ってへこみましたが、同時に今まで捉えることの出来ていなかった人の演奏の良し悪しも分かるようになって、以前よりも楽しみ方の幅が増えた気がします。

当時の自分に圧倒的に足りなかったのは基礎練習で、これがテンポを変えて同じフレーズを何時間もやり続けるという大変地味なもので、修行というかもう苦行というか、、たまにグルーヴが出ると、自分でも「おっ!」とは思いますが、まったく楽しむのも大変です泣

仕事はもちろん、別のことにも一生懸命になると、うまくリフレッシュできて、いつも新鮮な気持ちでいられる事が、趣味の良い所かなと思います。
おばあちゃんになる頃には、達人になっていたいなぁ、、と思いつつ、練習に励む日々です。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2019/09/post-e74aed.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0)

2019年9月12日 (木)読書の効果

おはようございます。
デザイナーのH.Nです。

突然ですが最近読書にハマっています。
通勤中や寝る前等、暇を見つけては本を読んでいます。
学生の頃は本には全く興味がなく、むしろ活字が大嫌いなくらいだったのに。
不思議なものですね。

特にこの作家が好き!とかはなく、なんとなく手に取ってみた本を読むことがほとんどです。
似たようなシチュエーションでも、作家によって、言い回しが大きく違うこともしばしばあります。
そういったところを気にしながら読むことも楽しみの一つです。

そして読書には、実は様々なメリットがあるそうです。
まず、
文章力・言語能力・漢字力・読む力
細かく分類するとかなり多くなってしまいそうなので割愛しますが、本を読むだけでこれだけの力が養われます。
また、テレビとは違って映像や音声も無く、与えられる情報は活字のみなので、情景や登場人物の心情を想像しなくてはなりません。
そこで欠かせないのが、疑問符や感嘆符をはじめとする記号や傍点です。
これらは主に音を視覚化して、読み手の想像をスムーズにしてくれます。
他にも、硬さや可愛さといった印象を与える書体も重要な情報となります。
想像力がなくては、すらすらと読み進めることがなかなか難しいため、自然と想像力が養われていきます。
読む人が変われば微妙に捉え方が違う所も、本の良い所だと私は思います。

先に述べた想像力ですが、ビジネスシーンでは非常に重要だと私は思います。
離れた相手とコミュニケーションを図る場合、会って話すよりメールや電話といった手段が主になるでしょう。
会話がテレビだとするなら、メールは本といったところでしょうか。
メールは本と同じく、相手が何を伝えたいのか、文字という少ない情報量から想像する必要があります。
想像力が身についていない人は、文字情報であるメールを読んでも相手の意を組むことが出来ず、"会話が成立しない"なんて状況に陥る可能性もあります。
本を読めば解決!というわけではありませんが、こういった問題を避けるために、力をつけるには身近な良いツールだと思います。

最近はどんどんデジタル化が進み、タブレットやスマホでも本が読めて便利だなーと思いますが、どこか温かみのある紙媒体のアナログな感じも私は好きです。

さぁ、次はどんな本に出会えるでしょうか、これからも、飽きるまで本を読み続けたいと思います。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2019/09/post-b9b549.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0)

2019年9月 5日 (木)動的にモデルを読み込む

おはようございます。
プログラマーのM.Iです。

夏ですね。今年もCEDECが近づいてきました。

ゲーム開発では効率化のため、モデルの修正をリアルタイムで確認したい、といったモチベーションがあります。
ゲームを動かしながらモデルを修正できれば調整しやすくなりますし、シェーダがのった状態で確認できるのもいい点です。
また、Unity等だとVRで見られるので、知識があればVRでのアニメーションやモデリングツールも作れるかもしれません。
間近でモデルを見ることで確認できる不具合もあるかもしれないですしね。
と言うわけで今回のお題はモデル・テクスチャを動的に読みこむ方法です。

UnityではSkinnedMeshRendererのsharedMeshを変更すれば動的にモデルを変更できます。
頂点や面、マテリアルは以下で設定できます。
例えばテレビのリモコンのモデルがあるとすれば、ゴム部分、プラスチック部分、金属部分の3つのマテリアルが必要ですね。

Mesh mesh = new Mesh();

// インデックスバッファはデフォルトでは帯域幅節約のため16bitになっている
// 頂点数が16bitを越えると32bitになるようにする
if ( verticeList.Length > 65535 )
{
  mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
}

// Vector3の頂点位置の配列
mesh.vertices = verticeList;
// Vector2のuvの配列
mesh.uv = uvList;
// マテリアル分サブメッシュを設定する
mesh.subMeshCount = MaterialList.Length;

// 法線をモデルから読みこまないならこれで自動計算してくれる
mesh.RecalculateNormals();

// MaterialList[ i ].Indiceはマテリアル毎のインデックスリスト
for ( int i = 0 ; i < MaterialList.Length ; i++ )
{
 // 第1引数はインデックスの配列、
 // 第2引数はインデックス形式、第3引数はマテリアル番号
 mesh.SetIndices( MaterialList[ i ].Indice , MeshTopology.Triangles , i );
}

例えば最初のマテリアルが
0,1,2 と 2,1,3
次のマテリアルが
3,4,5
番目の頂点を参照し、両方とも3角形であるなら

mesh.SetIndices(new int[]{0,1,2,2,1,3} , MeshTopology.Triangles , 0);
mesh.SetIndices(new int[]{3,4,5} , MeshTopology.Triangles , 1);
と呼ぶとマテリアル毎の面を作ってくれるというわけです。

ちなみにMeshTopology.Pointsにすれば頂点のみ描画してくれるようになります。

形が違うモデルを複数用意しておき、それぞれの形をブレンドする事をブレンドシェイプと言います。
プログラム的には頂点のインデックスと、どのくらい移動するかのオフセットさえあれば計算できます。
ブレンドシェイプは以下のようにすれば追加できます。

// モデル頂点分のVector3配列を作る
Vector3[] vertTemp = new Vector3[ VertexArray.Length ];

// ブレンドシェイプの頂点インデックス、座標のオフセットが入っている
foreach( var shapeVert in blendShapeList )
{
  vertTemp[ shapeVert.Index ] = shapeVert.Position;
}

// ブレンドシェイプの名前 座標のオフセット 法線や接線のオフセット
// 法線や接線のオフセットは不要ならnull
// 第2引数は複数フレームのブレンドシェイプを作る場合のウェイト。
// 1フレームだけならこれで100%のウェイトと言う意味
mesh.AddBlendShapeFrame( blendName , 1 , vertTemp , normal , tangent );

美顔ライトなどで影の入り方も調整する場合、法線のオフセットも設定できるようです。

スキニングはunity公式のバインドポーズのページをもとに、骨インデックスやウェイト等を設定すればいいので割愛します。

テクスチャ、マテリアルは以下のように設定できます

// テクスチャの大きさを指定
Texture2D tex = new Texture2D(width, height);
// 32bitの色配列 BinaryReaderなどでテクスチャを読んでimageDataに入れておく
tex.SetPixels32(imageData);
tex.Apply();

// シェーダ名
string shaderName = "Unlit/Texture";
Material newMat = new Material( Shader.Find( shaderName ) );

// マテリアルのメインテクスチャを設定
newMat.mainTexture = tex;

これをマテリアル分作れば、SkinnedMeshRendererのmaterialsに設定できます。

最後にSkinnedMeshRendererのsharedMeshにメッシュを設定すれば反映完了です。
Img_20190905_01
※クリックで拡大表示

maya等からモデル情報をudpなりで送ればボタンを押すだけでゲームエンジンに反映、といったことができるわけです。
.netの資源があるのでBinaryReader、Writerを使えばデータの入出力もできますしね。
バインドした骨オブジェクトを動かせば骨を動かせますし、SkinnedMeshRendererのSetBlendShapeWeightでブレンドシェイプも確認できます。

ちなみにUE4ではProceduralMeshComponentを使えば、動的にメッシュ作成ができそうなのですが、UV設定やマテリアル等はできそうなのにスキニング設定周りが見当たりません。
ProceduralMeshの機能はプラグインとして提供されていたので、
Engine\Source\Runtime\Engine\Private\Components\SkinnedMeshComponent.cpp
辺りを参考にすれば実装できるかもしれないですね。

follow us in feedly
result = encodeURIComponent( "http://www.accessgames-blog.com/blog/2019/09/post-a05160.html" );document.write( "result = " , result );&media=https%3A%2F%2Ffarm8.staticflickr.com%2F7027%2F6851755809_df5b2051c9_z.jpg&description=Next%20stop%3A%20Pinterest">

| | コメント (0)