おもちゃラボ

Unityで遊びを作ってます

Blender2.8でテクスチャを張る

Blender2.7xのときと比べて、Blender2.8ではテクスチャの貼り方〜表示方法が少し変わったので、この記事で紹介したいと思います。

f:id:nn_hokuson:20190225220355j:plain

ここではBlender2.8を使って、上図のようにサイコロの1面だけにテクスチャを貼ってみます。

使用するテクスチャ

使うテクスチャは何でも良いのですが、今回は次のテクスチャを使います。ダウンロードしてdice.pngという名前で保存してください。

f:id:nn_hokuson:20190225220508p:plain:w200

UV展開する

まずは「どこの面に、テクスチャのどの部分を貼るのか」を指定します。これをUV展開といいます。Bledner2.8でUV展開をするには、画面上のタブでUV Editingを選択します。

f:id:nn_hokuson:20190225215425j:plain

次にテクスチャを貼りたい面を、右のウインドウで選択します(Editモードにしてください)。今回はサイコロの上面を選択しました。この状態でUボタンを押して展開を選択してください。

f:id:nn_hokuson:20190225213502g:plain

すると、左のウインドウに今選択した面が展開されます(うっすらとですが、テクスチャのまわりに外枠が表示されている)。これを使ってテクスチャのどの部分を使うのかを指定していきます。

その前に貼りたいテクスチャを表示しておきましょう。画面上の「開く」からdice.pngを指定してください。

f:id:nn_hokuson:20190225215609j:plain:w450

テクスチャのどの部分を使うのかを指定していきます。今回は天面に1の目を表示したいので、Aキーでサイコロの上面の4頂点を選択して、gキーやsキーを使って左上の「1の目」にフィットさせます。

f:id:nn_hokuson:20190225214105g:plain:w450

これでサイコロの上面には、今指定した領域のテクスチャ(1の目)が使われるようになります。ウインドウ上の「Modelingタブ」をクリックしてモデリングモードに戻りましょう。

f:id:nn_hokuson:20190225215844j:plain:w600

テクスチャを使うマテリアルを作る

Blender2.8からはEEVEEレンダラーが採用され、これまで使われていたBlenderレンダラーが廃止になりました。それに伴ってテクスチャの貼り方が少しだけ変わっています。

サイコロに使うマテリアルの設定をします。マテリアルタブを選択して、ベースカラーから「画像テクスチャ」を選択します。すぐ下にある「開くボタン」を押してdice.pngを選択しましょう。

f:id:nn_hokuson:20190225220017j:plain:w350

サイコロに使うマテリアルの設定が出来ましたが、これだけではまだ表示されません。右上のシェーディングから「LookDev」を選択してください。これでBlenderエディタでもテクスチャが表示されます。

f:id:nn_hokuson:20190225220244j:plain

さいごに

ここではBlender2.8を使ったテクスチャの貼り方を紹介しました。Blender2.8になってテクスチャ以外にも多数の変更が入っています。変更点をまとめた記事も合わせて御覧ください!

nn-hokuson.hatenablog.com

Arduino IDEを使ってAVRにスケッチを書き込む

f:id:nn_hokuson:20190220200250j:plain

Arduinoは回路の実験をするには便利なんですが、後々まで置いておきたいものに組み込むには、ちょっと大げさです。

組み込んで置いてても、いざ使おうとすると、ピン足が抜けててあれどこにさすんだっけ?みたいな。長期保存することを考えると、AVRにスケッチを書き込んでを半田付けしちゃうのが一番です。

ATTiny85なら秋月で100円程度なので、組み込む心理障壁もやや低め。ということで、前置きが長くなりましたが、ここではarduino で書いたスケッチをAVRに書き込む方法を紹介します。

ArduinoはAVRライターにしない!

既存のArduinoをAVRライターとして使う方法もあるっちゃぁ、あるのですけど、少しややこしい上に、 Arduino からAVRに書き込むタイミングで次のようなエラーが出て、どうしようもなくなることがあります。

avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.

AVRのヒューズビットの問題のようですが、これを解決するためにヒューズリセッタを作って・・・なんてやってると終わらない。

AVRライター(USBASP V2.0)は買っても250円程度なので、エラーにハマる手間賃と思って、こっちを買うことをお勧めします。これとArduinoのスケッチさえあれば、確実にAVRにスケッチを書き込めます。

AVRライターとAVRの接続方法

AVRライターとAVRを接続します。ライター側のVCC、GND、MOSI、MISO、RST をそれぞれ、対応するピンに接続するだけです。

上記AVRライターの出力ピン配置は次のようになっています。

f:id:nn_hokuson:20190219202009p:plain:w300

Attiny85のピン配置は次のようになっているので、これをつなぎます。ほかのAVR(ATTiny2313など)でも同様です。ピン配置はデータシートを参照下さい。

f:id:nn_hokuson:20190219202356p:plain:w300

(番外編)アダプタを作る

ブレッドボードなどを使って接続しても良いのですが、いちいち組み立てるのが面倒なので、うちではTiny85用のアダプタを作りました。

f:id:nn_hokuson:20190219203241j:plain:w400

一応、マスクデータを置いておきますね。ご自由にお使いください(MOSIの配線だけはジャンプワイヤでつないでください)

f:id:nn_hokuson:20190219203615p:plain:w130

プリント基板を自作する方法は次の記事で説明しているので、参考にしてみてくださいね!

nn-hokuson.hatenablog.com

AVRにArduinoのスケッチを書き込む設定をする

次にArduino のスケッチをAVRに書き込むための設定をしていきます。Arduino IDEからAVRに書き込むにはATTinyCoreというミドルウェアを使用します。

Arduinoのメニューから環境設定を開き、メニューバーからArduino→Preferencesと進み、追加のボードマネージャのURLに http://drazzy.com/package_drazzy.com_index.json と入力してください。

f:id:nn_hokuson:20190219204319j:plain:w500

メニューバーから「ツール」→ 「ボード」→「ボードマネージャー」を選択して、ATTinyCore を選択してインストールしてください。

f:id:nn_hokuson:20190219204827j:plain:w500

次に書き込み設定を行います。メニューバーから「ツール」を選択して次のように設定してください。

ボード ATTinyCore/ATtiny85
Clock 8MHz(internal)
Chip ATtiny85
書き込み装置 USBasp

f:id:nn_hokuson:20190219205325j:plain:w300

Arduinoのスケッチを作成する

ここでは簡単にLチカのプログラムを作って・・・・と言いたいところですが、LEDを光らそうにもAVRのピン番号がわかりませんね。

AVRとArduinoのピン対応は次のサイトにまとまっているので、使用しているAVRを探してみてください。

github.com

上のサイトでArduinoとATTiny85の対応を確認したところ、次のようになっていました。

f:id:nn_hokuson:20190219211505p:plain

水色で書かれたARDUINO PINというのがピン番号です。「ディジタルピン/ アナログピン」の順番で並んでいます。ここでは3番ピンを使ってLチカするプログラムを作ってみましょう。

Arduino IDEに次のプログラムを作ってください。

void setup() {
     pinMode(3, OUTPUT);
}

void loop() {
    digitalWrite(3, HIGH);
    delay(100);
    digitalWrite(3, LOW);
    delay(100);
}

プログラムが作れたら、Arduinoの書き込みボタンを押してAVRに書き込みましょう。

f:id:nn_hokuson:20190220200455p:plain:w300

動作確認

AVRの書き込み装置から外して、3番ピン(Tiny85左側の上から2番目)にLEDと抵抗を接続してください。回路図は下のような感じになります。

f:id:nn_hokuson:20190220221839j:plain:w300

電源を入れると点滅することを確認しましょう!

f:id:nn_hokuson:20190220200927g:plain

(おまけ)プログラムのサイズを小さくする

Tiny85などの小さいAVRは、プログラムを配置するためのRAM容量も小さくなってしまいます。Arduinoに使われているATmega328はFlashが32KBなのに対して、Tiny85では8KBと1/4のサイズしかありません

コンパイル後のプログラムサイズはArduino IDEに表示されるので確認してみましょう。

最大8192バイトのフラッシュメモリのうち、スケッチが908バイト(11%)を使っています。
最大512バイトのRAMのうち、グローバル変数が9バイト(1%)を使っていて、ローカル変数で503バイト使うことができます。

Lチカだけで1KBちかく消費しています。なんとかプログラムのサイズを削りたい・・・そんなときの定石があります。digitalReadとdigitalWriteメソッド、あとpinModeメソットをそれぞれ次のプログラムに置き換えてみましょう。

置換前 置換後
digitalWrite(3, HIGH) PORTB |= _BV(3)
digitalWrite(3, LOW) PORTB &= ~_BV(3)
pinMode(3, OUTPUT) DDRB |= _BV(3)

置換後のプログラムは次のようになります。

void setup() {
     DDRB  |=  _BV(3);
}

void loop() {
    PORTB |=  _BV(3);
    delay(100);
    PORTB &= ~_BV(3);
    delay(100);
}

digitalWriteなどのメソッドは汎用性を考慮して、かなり大きなプログラムになっています。ここではマイコンらしくピンのオンオフだけをするように変更しました。コンパイルして容量を確認してみてください。

digitalWrite関数を使わないようにするだけで、プログラムサイズを500バイト程度減らせました。全部で8KBしかないことを考えると節約するに越したことはありません。

最大8192バイトのフラッシュメモリのうち、スケッチが490バイト(5%)を使っています。
最大512バイトのRAMのうち、グローバル変数が9バイト(1%)を使っていて、ローカル変数で503バイト使うことができます。

鉄道模型のパワーパックを自作する

鉄道模型を動かすときの電源装置はKATOやTOMIXなど各社から発売されています。呼び方も「パワーパック」だったり「パワーユニット」だったりとまちまちですが、とにかく電車の速度が変えられるあれです。

うちにも一台あったのですが、行方不明になってしまい・・・(なんでや)、せっかくなので自作してみることにしました。

f:id:nn_hokuson:20190204201415j:plain:w550

今回作るパワーパックの仕様

さて、今回作るパワーパックは機能を削ぎ落としたスリムパワーパック(なんか、モバイルバッテリーっぽい名前)にしようと思います。機能は次の通り。

  • 電源電圧は12V1A、過電流保護付き
  • ボリュームで速度調整ができる
  • 電源スイッチ付き

流石に過電流保護とボリュームがついていないと、もはや電源アダプタを直つなぎしたのとあまり変わらないので、こうなりました(笑)

パワーパックの回路図

今回作成するパワーパックの回路図は次のようになります。

f:id:nn_hokuson:20190204203220j:plain:w300

トランジスタ1石の超シンプル回路構成です。ボリュームによってトランジスタのベースの電圧(と流入する電流量)を調節し、トランジスタからの出力電圧を変化させます。

トランジスタには2SD1415Aを使っています。ダーリントントランジスタでないと出力する電流量が足らなくて、電車が動かない可能性があります。2019年2月現在、秋月で100円程度で販売されています。

akizukidenshi.com

あ、あとトランジスタの足ですが、平らな面からみて左から「エミッタ・コレクタ・ベース」の順番で並んでいます。ちょっとハマりポイントなので注意してください!

f:id:nn_hokuson:20190204203307j:plain:w100

あとの材料は、一般的なものなので何でも構いません。過電流保護用のポリスイッチは忘れずにつけてください。パワーパックは壊れても鉄道模型は壊さないでください。

一応使用した部品のリストを書いておきます。

あと、レールと電源はこちらを使用しました。

パワーパックの組み立て

今回自作するパワーパックの回路は非常に単純なので、ラグ板を使って組みました(渋い)
電源入力端子と出力端子(コネクタ)はホットボンドを使って固定しています。ええ邪道です。

f:id:nn_hokuson:20190204194932j:plain:w500

ラグ板に半田がうまく乗らないときは、フラックスを塗りたくりましょう(ってほど、塗っちゃだめです)ものすごくはんだ付けが捗ります。

完成したパワーパックがこちら。ちゃっちいですが、ちゃんと動きます。

パワーパック完成写真

試運転

ちゃんと動いてます。走っているのはEgger Bahn No5。小型の機関車がとても好きなのです。

パワーパック動作動画

ここまで読んでいただいてなんですが、
パワーパックぐらい自分で買うよ、という方はこちらからどうぞ(笑)

どんどん遠ざかりますが、
鈴木天狗堂の手摺り花札はこちらから
tengudo.hatenablog.jp