unityとblenderハンズオン第2章
TRANSCRIPT
はじめに
静岡Developers勉強会では、過去に下記の勉強会を行いました。2010年:「Programming in Haskell」2011年:「JavaScript: The Good Parts」2012年:「HTML5&CSS3実践入門」、「GitHubハンズオン」、
「node.jsハンズオン」2013年:「入門 機械学習」2014年:「実践 コンピュータビジョン」
2015年は上記の勉強会で学んだことを実践し、Shizudev名義のスマホアプリを開発します。
作成後は公開用のサイトや動画も作成し、機械学習を使ってダウンロード状況などを分析していきます。スマホの広告費は会費にあて、万が一予定より多く収入が入った場合には寄付を考えています。
自己紹介
やじゅ@静岡・・・漢字名は「八寿」
平口八寿人(https://www.facebook.com/yasuhito.hiraguchi)
アラフォーエンジニア、元MSMVP(VisualBasic)
静岡県島田市のSL(大井川鉄道)が走っている所に在住
Twitter:yaju はてなID:Yaju3D
http://blogs.wankuma.com/yaju/
http://yaju3d.hatenablog.jp/ 数学と物理を基礎からやり直す)
http://www.slideshare.net/yaju88/presentations (スライド)
概要
2015年の静岡Developers勉強会は「スマホアプリの開発」を題材とします。
スマホアプリを開発する上で、汎用的なツールの使い方を学びます。
・Unity統合開発環境を内蔵し、複数のプラットホームに対応するユニティ・テクノロジーズが開発したゲームエンジンである。ゲームとインタラクティブな3Dコンテンツ制作のための常識にとらわれない強力な機能を提供します。
・Blenderオープンソースの3DCG制作ツールです。
3Dモデルの作成、レンダリングのほかアニメーション、コンポジット機能も備える。
セッション内容 Unityでアルカノイド(ブロック崩し)もどきを作成 C#スクリプト
http://noobtuts.com/unity/2d-tetris-game
Blenderでサイコロを作成(モデリング)
https://www.youtube.com/watch?v=3ae3bjvhjEQ
Blenderで木目調のテーブルを作成(おまけ)
スマホアプリのアイディア
Unityでアルカノイドもどきを作成
はじめに@noobtuts さんのチュートリアルを参考にUnityの使い方をマスターする
http://noobtuts.com/unity/2d-arkanoid-game
【学ぶポイント】Unityの物理演算を理解する
今回使用するオブジェクトBox Collider 2D…箱型の当たり判定を扱うオブジェクトRigidbody 2D…物理演算を扱うオブジェクトPhysics Material 2D…摩擦と跳ね返りを管理するオブジェクト
Unity:カメラの設定と背景の作成
Hierarchy(ヒエラルキー)
Unityのゲームシーンは、キャラから背景まで、すべてのゲームオブジェクト(GameOnject)で構成されます。このゲームをオブジェクトを階層構造で編集
できるのがHierarchy(ヒエラルキー)です。
Main Cameraを選択して右側のInspectorに内容が表示されることを確認
Unity:カメラの設定と背景の作成 Inspector(インスペクタ)
その時点で選択されているゲームオブジェクトやアセットの詳細情報を表示・編集するビューです。
Background 黒色Size 125に変更する
Unity:背景画像の保存
Assets(アセット)
Assetは資産の意味。Unityで使用するオブジェクトやスクリプトを保存するフォルダ。
Assetsの右クリックで「Show in Exprore」を選択し、arkanoid/Assetsフォルダに
背景の「hexagon_pattern.png」を入れる。
資料:https://github.com/yaju/ShizuDev_UnityAndBlender/tree/master/Session2
Unity:背景画像の設定
背景画像の設定
Assetsの「hexagon_pattern」を選択、Inspectorで変更する。
Pixels To Units 1に変更する
最新バージョンではPixels Per Unitsに変更されている
Filter Modeを「Point」に変更する。
画像をぼやけさせないでドットを強調させるため
チュートリアルはOne Column Layoutであるが変更は不要
Unity:背景の設定①
両端の準備
Assetsの「hexagon_pattern」をドラッグして、Sceneにドロップを行う。
拡大されて表示されている場合、マウスホイールで縮小させる。
Unity:背景の設定②
Sorting Layer(重ね順のレイヤ)の設定
Inspectorの「hexagon_pattern」にて、Sorting LayerにてAdd Sorting Layerを押す。
「Tags & Layers」画面に切り替わるので「+」ボタンを押し、Layer 1に「Background」をセットする。
Layer 1をドラッグして、Layer 0の上に持っていく。
Inspectorの「hexagon_pattern」にてSorting Layerを「Default」から「Background」に変更します。
レイヤーの順序を入れ替える
Unity:背景の設定②
枠の設定
Assetsの右クリックで「Show in Exprore」を選択し、arkanoid/Assetsフォルダに
ボーダーの「border_top.png」と「border_left.png」と「border_right.png」を入れる。
資料:https://github.com/yaju/ShizuDev_UnityAndBlender/tree/master/Session2
ボーダーの「border_top.png」と「border_left.png」と「border_right.png」のPixel Per Unitsを
「100」→「1」に変更する。Filter Modeを「Bilinear」→「Point」に変更し「Apply」ボタンを押す。
Pixels To Units 1に変更する
最新バージョンではPixels Per Unitsに変更されている
Unity:背景の設定③ 枠の位置設定
Assetsの「border_top」と「border_left」と「border_left」をドラッグし、 Hierarchyにドロップする。
(階層は他と同じところ)。また、各borderの位置を設定する。
Unity:枠の衝突一括設定Hierarchyで各borderを選択し、Inspectorにて「Add Component」→「Physics 2D」→「Box Collider 2D」
を選択する。
Unity:ラケット画像の保存と設定Assetsの右クリックで「Show in Exprore」を選択し、arkanoid/Assetsフォルダに
ラケットの「racket.png」を入れる。
資料:https://github.com/yaju/ShizuDev_UnityAndBlender/tree/master/Session2
ラケットの「 racket.png 」とのPixel Per Unitsを「100」→「1」に変更する。
Filter Modeを「Bilinear」→「Point」に変更して「Apply」ボタンを押す。
Unity:ラケットの設定
ラケットの位置
Assetsの「racket」をドラッグして、Sceneにドロップを行い、Position X=0、Y=-98の位置にセットする。
Inspectorにて「Add Component」→「Physics 2D」→「Box Collider 2D」を選択する。
「Add Component」→「Physics 2D」→「Rigidbody 2D」を選択する。
Rigidbody(リジッドボディ)
Mass(質量)を「100」Gravity Scale(重力の影響度)を「0」Fixed Angle(回転)にチェックオン
Unity:C#スクリプト(Racket)の作成ProjectエリアのCreateのメニューから、「C# Script」を選択します。
Assetsに「C# Script」が作成されるので名前を「NewBehaviourScript」→「Racket」にします。
※名前の変更が後回しになると、クラス名が「 NewBehaviourScript 」となってしまうので
クラス名も「Racket」変更にする必要が出てきます。
using UnityEngine;
using System.Collections;
public class Racket : MonoBehaviour {
public float speed = 3;
void FixedUpdate () {
// Left key pressed?if (Input.GetKey(KeyCode.LeftArrow)) {
transform.Translate(new Vector2(-speed, 0));
}
// Right key pressed?if (Input.GetKey(KeyCode.RightArrow)) {
transform.Translate(new Vector2(speed, 0));
}
}
}
Unity:MonoBehaviorクラスとはUnityエンジンからゲームの実行状況に応じてメッセージが送信されると、
実装クラス内にあるメッセージと同じ名前の関数を実行します。
MonoBehaviorクラス
Awake
Start
FixedUpdate
Update
LastUpdate
OnGui
OnColisionXXXX2D
OnTriggerXXXX2D
OnDisenable
継承先クラス
Start
Update
OnGui
シーン開始時に呼ばれる
描画時に呼ばれる
Unity GUI描画時に呼ばれるOnColisionEnter2D
コライダーヒット時に呼ばれる
Unity:ラケットの操作
C#スクリプト(Racket)の追加
Hierarchyの「Racket」を選択して、Inspectorで「Add Component」ボタンを押下し、
Component一覧からScripts→ Racketを選択する。
Playして左右の矢印キーでラケットが移動できることを確認する。
PlayしてGame画面を確認する
Unity:ボール画像の保存と設定Assetsの右クリックで「Show in Exprore」を選択し、arkanoid/Assetsフォルダに
ラケットの「ball.png」を入れる。
資料:https://github.com/yaju/ShizuDev_UnityAndBlender/tree/master/Session2
ボールの「 ball.png 」とのPixel Per Unitsを「100」→「1」に変更する。
Filter Modeを「Bilinear」→「Point」に変更して「Apply」ボタンを押す。
Assetsの「ball」をドラッグしてSceneにドロップを行い、Position X=-0.5、Y=-85.5の位置にセットする。
Inspectorにて「Add Component」→「Physics 2D」→「Box Collider 2D」を選択する。
「Add Component」→「Physics 2D」→「Rigidbody 2D」を選択する。
Unity:ボールの位置の設定
Rigidbody(リジッドボディ)
Mass(質量)を「0.0001」Gravity Scale(重力の影響度)を「0」Fixed Angle(回転)にチェックオン
Unity:ボールの動きの設定
ProjectエリアのCreateのメニューから、「Physics2D Material」を選択します。
Assetsに「 Physics2D Material 」が作成されるので名前を「New Physics2D Material」→「BallMaterial」
にします。
Inspectorの「ball」の「Box Collider 2D」のMaterialに「BallMaterial」を設定します。
Material BallMaterial
Center X -0.5 Y 0.5Size X 5 Y 4
に変更する
Unity:C#スクリプト(Ball)の作成ProjectエリアのCreateのメニューから、「C# Script」を選択します。
Assetsに「C# Script」が作成されるので名前を「NewBehaviourScript」→「Ball」にします。
※名前の変更が後回しになると、クラス名が「 NewBehaviourScript 」となってしまうので
クラス名も「Ball」変更にする必要が出てきます。
using UnityEngine;
using System.Collections;
public class Ball : MonoBehaviour {
// Speed to be modified in the Inspectorpublic float speed = 100.0f;
void Start() {
// Give the ball some initial movement directionrigidbody2D.velocity = Vector2.up * speed;
}
float hitFactor(Vector2 ballPos, Vector2 racketPos, float racketWidth) {
// ascii art://// 1 -0.5 0 0.5 1 <- x value// =================== <- racket//return (ballPos.x - racketPos.x) / racketWidth;
}
void OnCollisionEnter2D(Collision2D col) {
// Hit the Racket?if (col.gameObject.name == "racket") {
// Calculate hit Factorfloat x=hitFactor(transform.position,
col.transform.position,
((BoxCollider2D)col.collider).size.x);
/ / Calculate direction, set length to 1Vector2 dir = new Vector2(x, 1).normalized;
// Set Velocity with dir * speedrigidbody2D.velocity = dir * speed;
}
}
}
Unity:ボールの移動Hierarchyの「ball」を選択して、Inspectorで「Add Component」ボタンを押下し、
Component一覧からScripts→ Ballを選択する。
Playしてボールの動きとラケットとの衝突ができることを確認する。
PlayしてGame画面を確認する
Unity:ブロック画像の保存と設定Assetsの右クリックで「Show in Exprore」を選択し、arkanoid/Assetsフォルダに
ブロックの「block_blue.png」と「block_green.png」と「block_pink.png」と「block_red.png」と「block_yellow.png」の5ブロックを入れる。
資料:https://github.com/yaju/ShizuDev_UnityAndBlender/tree/master/Session2
各ブロックの「 block_(色).png 」を選択してPixel Per Unitsを「100」→「1」に変更する。
Filter Modeを「Bilinear」→「Point」に変更して「Apply」ボタンを押す。
Unity:ブロック格納用の設定
HierarchyのCreateボタンにて「Create Empty」を選択して出来た「GameObject」→「Blocks] に
名前を変更する。BlocksのPositionは全て「0」にしておく。
Unity:ブロックの衝突の設定Assetsの「ball_red」をドラッグしてSceneにドロップを行い、Position X=-96、Y=75の位置にセットする。
Blocksの下位に「block_red」を移動させる。
Inspectorにて「Add Component」→「Physics 2D」→「Box Collider 2D」を選択する。
Center X -0.5 Y 0.5Size X 15 Y 7
に変更する
Unity:C#スクリプト(Block)の作成ProjectエリアのCreateのメニューから、「C# Script」を選択します。
Assetsに「C# Script」が作成されるので名前を「NewBehaviourScript」→「Block」にします。
※名前の変更が後回しになると、クラス名が「 NewBehaviourScript 」となってしまうので
クラス名も「Block」変更にする必要が出てきます。
Hierarchyの「block_red」を選択して、Inspectorで「Add Component」ボタンを押下し、
Component一覧からScripts→ Blockを選択する。
using UnityEngine;
using System.Collections;
public class Block : MonoBehaviour {
void OnCollisionEnter2D(Collision2D collisionInfo) {
// Destroy the whole BlockDestroy(gameObject);
}
}
Unity:ブロックを複製して並べる
Hierarchyの「block_red」を「Ctrl + D」または右クリックメニューの「Duplicate」を使って
12個複製して全部で13個作成する。
X方向は16ドット単位 X=-96,X=-80,X=-64,X=-48,X=-32,X=-16,X=0,X=16,X=32,X=48,X=64,X=80,X=96
Y方向は 8ドット単位 red Y=75, yellow Y=67 , blue Y=59 , pink Y=51 , green Y=43
Unity:ブロックの一括設定
Hierarchyにて各blockをシフトキーで一括選択しておく。
Inspectorにて「Add Component」→「Physics 2D」→「Box Collider 2D」を選択する。
Hierarchyの「block_red」を選択して、Inspectorで「Add Component」ボタンを押下し、
Component一覧からScripts→ Blockを選択する。
Center X -0.5 Y 0.5Size X 15 Y 7
に変更する
Unity:C#スクリプト(BlockMap)の作成ブロックを並べる手間を省くため、スクリプトによって追加する。
ProjectエリアのCreateのメニューから、「C# Script」を選択します。
Assetsに「C# Script」が作成されるので名前を「NewBehaviourScript」→「BlockMap」にします。
Hierarchyの「Blocks」を選択して、Inspectorで「Add Component」ボタンを押下し、
Component一覧からScripts→ BlockMapを選択する。
スクリプトではBlocksの子の5種類を複製する方法で追加するため、各ブロックを1種類のみ残して
他は削除する。X方向は全てX=-96、Y方向は red Y=75, yellow Y=67 , blue Y=59 , pink Y=51 , green Y=43
Unity:C#スクリプト(BlockMap)の内容public class BlockMap : MonoBehaviour {
void Start () {
GameObject obj;
int count = this.transform.childCount;
for (int i=0; i<count; i++) {
GameObject child = this.transform.GetChild (i).gameObject;
for (int j=1; j<13; j++) {
float x = j*16 + child.transform.position.x;
float y = child.transform.position.y;
obj = (GameObject)Instantiate (child, new Vector3 (x, y, 0), Quaternion.identity);
obj.name = child.name;
obj.transform.parent = this.transform;
}
}
}
}
Unity:スコアの作成準備
HierarchyのCreateでUIのTextを選択する。
Canvasを「Score GUI」に変更して、Textを「Score」にして、EventSystemを削除する
※ EventSystemは、画面のボタンイベント等の操作用オブジェクト、今回スコアでは使用しない
Unity:スコアの作成準備Inspectorにて「Score GUI」のRender Modeを「World Space」に変更する。
「Score GUI」をゲーム画面の範囲に合わせる。
今度は「Score」を右上に配置して、Textを「Score:0」にFont Sizeを「16」にColorを白色にする。
Unity:スコアのスクリプト作成ProjectエリアのCreateのメニューから、「C# Script」を選択します。
Assetsに「C# Script」が作成されるので名前を「NewBehaviourScript」→「Score」にします。
Score.csをコピーして、HiScore部分を削除するかコメントアウトします。
http://japan.unity3d.com/developer/document/tutorial/2d-shooting-game/game/12.html
Hierarchyの「Score GUI」を選択して、Inspectorで「Add Component」ボタンを押下し、
Component一覧からScripts→ Scoreを選択する。
Score GUITextにて「Select Text」ダイアログ画面から「Score」を選択する。
Unity:ブロックスクリプトにスコアを追加
スクリプトの「Block.cs」を起動して、下記を追加します。ゲームプレイして点が増えること確認void OnCollisionEnter2D(Collision2D collisionInfo) {
int sc = 0;
switch (this.name) {
case "block_red":
sc = 30;
break;
case "block_yellow":
sc = 20;
break;
case "block_blue":
sc = 15;
break;
case "block_pink":
sc = 10;
break;
case "block_green":
sc = 5;
break;
}// スコアコンポーネントを取得してポイントを追加
FindObjectOfType<Score>().AddPoint(sc);
// Destroy the whole Block
Destroy(gameObject);
}
Unity:デバッグ方法の確認
スクリプトの「Block.cs」のSwitch文にブレークポイントを追加します。
スタートボタンをしてAttach to ProcessでUnity Editore(Unity)を選択し「Attach」ボタンを押します。
ゲームをプレイして、ボールがブロックに当たったら、ブレークポイントに止まることを確認する。
※Macでデバッグ出来ない方は、[Mono-Develop-Mac]->[Add-in Manager...]->Installedタブ->Unity-
>Mono Soft Debugger Support for Unityが有効またはインストールされていることを確認してください。
Unity:よりゲームらしくするために
ボールがラケットより下に落ちたらゲームスタートに戻す
方法はいくつかある。Boder_bottomを追加してBox Collider 2Dを追加して
void OnCollisionEnter2D(Collision2D collisionInfo)で判定する。
マネージャークラスを作成する
下記サイトを参考にタイトルの作成とManager.csを改良する。
http://japan.unity3d.com/developer/document/tutorial/2d-shooting-
game/game/10.html
音を追加する
下記サイトを参考に音を付けます。素材 ゲーム開発に使える音源配布サイトまとめ(効果音編)
http://japan.unity3d.com/developer/document/tutorial/2d-shooting-
game/game/08.html
Blender:はじめる前に(fpsの設定)
右側にあるパネルのカメラのアイコンになっていることを確認
「Demensions」の「FrameRate」の「24fps」ボタンを押下して「29.97」に変更する。
Blender:はじめる前に(日本語の設定)
インターフェイスを日本語にする
Fileメニューの「User Preferences」で「User Preferences」画面の「System」タブを選択する。
右下の「International Fonts」のチェックを入れて、
「Language」の「Default(Default)」ボタンを押下
して「Japanese(日本語)」にする。
「Translate」の「Interface」と「Tooltips」の
両方のボタンを押下する。
左下の「Save User Settings(ユーザーの設定の保存)」
で設定保存。
一部のコンピュータでは「User Preferences」が表示されない場合がある。
Blender:はじめる前に(その他の設定)
選択を中心に回転およびPythonツールチップを表示
「User Preferences」画面の「インターフェイス」タブを選択する。
「選択を中心に回転」チェックボックスをオンにする。
「Pythonツールチップを表示」チェックボックスをオフにする。
Numパッドを再現
テンキーの無いキーボードを使っている場合
「User Preferences」画面の「入力」タブを選択する。
「 Numパッドを再現」チェックボックスをオンにする。
3Dビュー Dynamic Spacebar Menu
「User Preferences」画面の「アドオン」タブを選択する。
「3Dビュー」の「Dynamic Spacebar Menu」のチェックボックスをオンにする。
左下の「Save User Settings(ユーザーの設定の保存)」で設定保存。
Blender:はじめる前に(操作系)
選択が右クリックはやっぱきつい方へ
Blenderネタとしては定番になってる「選択を右クリックから左クリックに変更」。
ファイル→ユーザー設定→ 入力→選択の左に変更
※今回のセッション資料上は、選択は右クリックのままで行います。
Macユーザーの方へ
セッション作成者がWindowsユーザーのため、Macの方は下記サイトを参考に操作してください。
[Blender]事始めのチュートリアル動画まとめ
Blender のための Mac OS X(雪豹)のトラックパッドおよびキーボード設定
Blender基礎最速マスター
MacBookProでBlenderを扱うときにNumkeyが無い問題
Blender:基本操作カメラ、3Dモデル、光源は右クリックで選択、オレンジで色が変わるので
右ボタンを押しながら移動(一旦、移動すれば右ボタンを押さなくてもよい)、
左クリックで確定させる。
F12キーで、カメラや光源が反映された3Dビューの表示が変わる。ESCキーで元の表示に戻る。
カメラ
3Dモデル
光源
3Dカーソル3D空間の場所を示すためのポインタ
Blender:基本操作
拡大・縮小
マウスのホイールで3Dモデルの拡大・縮小
視点の向きの変更
マウスのホイールを押しながらマウス移動
視点の移動
SHIFTキーとマウスのホイールを押しながらマウス移動
前後不覚になった場合
Homeキーを押す、または下側にある「ビュー」メニューから「全てを表示」を
選択すると3Dビューウィンドウに丁度すべてが収まるように視点が移動される。
Blender:箱に色をつける
箱の色を変更する
箱を右クリックで選択、プロパティエディタの右から
4番目の「マテリアル」ボタンをクリックします。
「ディフューズ」で指定の色にする。
履歴の参照とアンドゥで元に戻す
左側パネルの履歴にて
元に戻す(Ctrl + Z)
やり直す(Shift Ctrl + Z)
Blender:ウィンドウ・フレームを分ける
ウィンドウの右上側の角にある三角(右図の黄色の線で囲まれた部分)はスプリッタ・ウィジェットです。ウィンドウを分割したり、結合したりします。
スプリッタ・ウィジェットをドラッグしながら移動させる。
3分割するなどして、ビューにより視点を各フレームごとに切り替えておくといい。
元に戻したい場合、スプリッタ・ウィジェットをドラッグして結合先のウィンドウが少し暗くなったらドラッグを解除する。
Blender:サイコロを作成(モデリング)
Hollykaz03さんが公開している動画を参考に、サイコロを作成します。
https://www.youtube.com/watch?v=3ae3bjvhjEQ
blenderでサイコロを作る
http://aadimstx.blogspot.jp/2011/11/blender.html
Blender:ベベルの追加ベベルとは辺や角を滑らかにする効果です。
プロパティエディタの「スパナ」のアイコンを選択します。
追加ボタンを押した時のメニューから「ベベル」を選択します。
幅を0.18にして必ず「適用ボタン」を押して実体化させます。
カンナで面取りしたイメージ
Blender:ループカットとスライド「オブジェクトモード」から「編集モード」に変更する。
※ベベルの際に適用ボタンを押さないまま「編集モード」にすると、左下画像のように3Dモデルが枠に囲まれた状態になっています。その場合、「オブジェクトモード」に戻して、ベベルの適用ボタンを押してください。
左パネルからループカットとスライドを選択する。
またはショートカットキーの「Ctrl + R」を押す。
ベベルを適用して実体化させておく
枠に囲まれた状態
Blender:全面を3分割する3Dモデルにマウスを持っていくと、水平にピンクの線が出来る。
ピンクの線を増やすには、マウスホイールを使う。
左クリックで線の色が黄色になり、マウスで上下移動が出来る。
再度、「Ctrl + R」キーを押して垂直にも同様に行う。
マウスホイールを押しながらマウス移動させて3Dモデルの視点を変えて同様に行う。
最終的にAキーで選択を解除して、全体が3分割されているか確認する。
※アンドゥ機能は、「Ctrl + Z」キーです。
Blender:1の面を作成するマウスホイールを押しながらマウス移動させて3Dモデルの視点を変更する。
頂点選択、辺選択、面選択のアイコンから「面選択」を選択する。
右パネルの拡大縮小を選択する。またはショートカットキー「S」を押す。
←→の矢印が表示されるので、マウス移動でほんの少し拡大させる。
※アンドゥ機能は、「Ctrl + Z」キーです。
ショートカットキー「S」を使うと楽。
シフトキーを押しながら、右クリックで他の面を選択していく。
マウスホイールを押しながらマウス移動させて3Dモデルの視点を変更する。
※たまにホイールボタンを押しながらシフトキーで視点移動したり、
ホイールボタンで3Dモデルを縮小させたりするといい。
Blender:他の面を選択する
Blender:目の箇所を凹ます準備右パネルの「押し出し」で「各面ごとに」を1回押す。またはスペースキーのメニューでも同様。
すぐに右クリックを押す。
※この際にマウス移動してはダメよ~ダメダメ!凹みを作るのが目的
Blender:目の整形
プロパティエディタの「スパナ」のアイコンを選択します。
追加ボタンを押した時のメニューから「細分割曲面」を選択します。
細分化のビューを「1」→「3」に設定します。
※この際に「適用」ボタンを押してはダメよ~ダメダメ!
Blender:目のカラーリングの準備
3Dビュー下パネルの「オブジェクトモード」から「編集モード」にします。
サイコロの目の真ん中の点が全てオレンジ色に選択されていることを確認します。
されていない場合、シフトキーを押しながら、右クリックで真ん中を選択していく。
全ての面が選択が出来たら、隣接面の選択「Ctrl + +(プラス)」を押して目の枠を選択させます。
または「選択」メニューの「選択を拡大」でも同様になります。
隣接面の選択Ctrl と + を押す
Blender:目のカラーリングプロパティエディタの「マテリアル」のアイコンを選択します。
「+」ボタンを押した後に新規ボタンで「Material.001」を追加し、ディフューズで色を黒色にして
「適用」ボタンを押します。
Blender:1の目のカラーリング
プロパティエディタの「マテリアル」のアイコンを選択します。
Aキーで選択を解除して1の目のみ隣接面の選択「Ctrl + +(プラス)」をしておきます。
「+」ボタン押した後に新規ボタンで「Material.002」を追加し、ディフューズで色を赤色にして
「適用」ボタンを押します。
隣接面の選択Ctrl と + を押す
Blender:カメラの位置と光源の位置を調整
F12キーを押すとレンダーされたモデルが表示されるが、一部の面が暗いので
カメラの位置と光源の位置を調整する。光源を右クリックして選択して、移動させる。
※今回は、リアルタイムに光源が反映されないのでF12で随時確認する。
Blender:木のテーブルを作成する(応用)
これまで学んだことを活かしながら、
Blenderでは、赤い矢印がX軸(横軸)、緑の矢印がY軸(奥行き)、青の矢印がZ軸(縦軸)で、
空間を表現しています。他の3Dモデリングツールは、Yが縦軸、Zが奥行きの場合が多いです。
Blender:テーブルの天板を作成する
天板(てんばん)部分を作成します。
S→ZキーでZ軸方向に縮小して薄い形状にします。
Blenderでは、赤い矢印がX軸(横軸)、緑の矢印がY軸(奥行き)、青の矢印がZ軸(縦軸)で、
空間を表現しています。他の3Dモデリングツールは、Yが縦軸、Zが奥行きの場合が多いです。
Blender:テーブルの脚を作成する
立方体を追加して、 天板から重ならい位置までGキーで移動させます。
Sキーで縦方向に細長い形状にします。キャンセルはESCキーです。
S→YキーでY軸方向(緑)に縮小。S→XキーでX軸方向(赤)に縮小。
Gキーで移動させて、天板の左下隅に持っていく。
Blender:テーブルの脚を作成する(選択範囲やり直し)
脚の選択範囲が外れてしまった場合、再度選択範囲をやり直します。
Aキーで選択範囲の解除ができます。
Ctrlキーを押して左クリックでマウス移動させると3Dモデルを選択範囲で囲める。
裏面が選択範囲に含まれていない場合があるので、視点を変更して確認する。
Blender:テーブルを4分割する
ミラー機能を使う準備をするために天板を4分割します。
左パネルからループカットとスライドを選択する。
またはショートカットキーの「Ctrl + R」を押して天板を4分割します。
Blender:テーブルの分割範囲を選択
頂点選択、辺選択、面選択のアイコンから「面選択」を選択する。
脚があるところ以外の天板を選択する。裏面や側面までも選択させる。
Ctrlキーを押して左クリックでマウス移動させて3Dモデル選択範囲で囲んでもいい。
Blender:テーブルを分割する
Xキーでメニューが表示されるので、「面」を選択して削除する。
削除しきれないところは再選択して再削除して、脚のある天板だけにする。
分割した面を選択して、Nキーでトランスフォームの中点座標を確認する。
ずれているとミラー時に隙間があく。
Blender:ミラー機能で対称テーブル作成する
プロパティエディタのアイコンを「スパナ」に変更して、追加ボタンで「ミラー」を選択する。
Y軸をチェックをオンとし、クリッピングのチェックもオンにする。対称なオブジェクトができる。
Blender:テーブルの角の面取りを行う
「編集モード」から「オブジェクトモード」に変更しておく。
プロパティ画面の「スパナ」のアイコンを選択して、追加ボタンで「ベベル」を選択する。
セグメントを「2」にする。
Blender:テーブルを木目調にする準備
プロパティエディタのアイコンを「テクスチャ」に変更して、タイプを「木目」に
プレビューを「立方体」かつ「両方」を選択する。
カラーランプのチェックを入れて、カラーストラップの両端とも色を16進数で「DEB887」にする
木目を「鋸波(のこぎりは)」の「リング」にして、マッピングを「Z」→「X」にする。
スマホアプリのアイディア
今年は、Shizudev名義でスマホアプリを作成します。
最初は、お金の負担が少ないアンドロイド向けに開発する。
好評なら、iPhoneアプリも開発する。
前回、発表した子供向けかつ教育向けのゲームアプリのまとめを行う。
6月に 2Dミニゲーム作成と発表」を企画しています。これまで学んだ内容からオリジナルのミニゲームを時間内で作成し、発表してもらいます。
ここでプロトタイプ版のゲームが出来るようにして発表を予定しています。