railsチュートリアル10章
リスト10.20サンプルデータにマイクロポスト用のコードを追加する。ではまる
リスト10.20の通りにマイクロソフト投稿のコードをFaker(バージョン1.4.3)を使って記述するけど エラーが出てしまう・・・ エラーとしては、ターミナル上で、
$ bundle exec rake db:populate をした後に下記のエラーが出た
/Users/xxx/.rvm/gems/ruby-2.1.1/gems/activerecord-4.1.4/lib/active_record/scoping/named.rb:24:in
all' /Users/xxx/sample_app/lib/tasks/sample_data.rake:23:in
block (2 levels) in' /Users/xxx/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in eval' /Users/xxx/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in
'
と出てしまう どうやらアクティブレコードに 'all' なんてパラメーターはないよ、ってことらしい 参考↓ ruby on rails - wrong number of arguments (1 for 0) Hartl chapter 10...bundle exec rake db:populate - Stack Overflow
なので、上記のリンク通りに
User.all(limit:6) ではなく
User.limit(6) としてやればちゃんとマイクロソフトが投稿されました良かった
一応、マイクロソフトがちゃんと投稿されたsample_data.rakeを記述しておきます
namespace :db do desc "Fill database with sample data" task populate: :environment do admin = User.create!( name: "Example User", email: "example@railstutorial.jp", password: "foobar", password_confirmation: "foobar", admin: true ) 99.times do |n| name = Faker::Name.name email = "example-#{n+1}@railstutorial.jp" password = "password" User.create!( name: name, email:email, password: password, password_confirmation: password ) end users = User.limit(6) 50.times do content = Faker::Lorem.sentence(5) users.each{|user| user.microposts.create!(content: content)} end end end
自分はgemのバージョンを指定せずに色々やってるので ちょいちょい今まで引っかかってます(^_^;) (Fakerはバージョン1.4.3です) バージョンのせいなのかもしれないけどとりあえず動いて良かった
TWE-Strongにファームウェアを書き込む方法(てこずった)
TWE-Strongはピン配置が違って最初は難しい
2015/04/15 追記(TWE-Lite-Rを使った書き込み方法、一番下に記載)
TWE-liteを使って無線通信を行っています
今回は、TWE-liteのシリーズであるTWE-Strongを使って見てるのですが
ZigBeeモジュール TWE?Strong 外付けアンテナ版 ※外付けアンテナ別売り
- 出版社/メーカー: TOCOS
- メディア: エレクトロニクス
- この商品を含むブログを見る
まず、TWE-Lite DIPなどと違いピンの大きさが違います(ピンが0.4mm幅) そのため、簡単に書き込むには2.54mmピッチ変換基板が必要になります
TWE-Strongに使うピッチ変換基板
- メディア:
- この商品を含むブログを見る
これ、ファームウェアなどを書き込みたい時(プログラムを書き換えたい時)に、コスモス電機さんのホームページには 「DIPと同じピン配置で、同じように書き込むことが出来ます」
みたいに書いてあるのですがどうみても難しいです・・・・ 電子工作初心者には厳しいものがあるかなと (電子工作歴長い方に聞いてみても「・・・これはわかりにくいよ」とおっしゃってました(^_^;))
とにかく、便利なツールではあるので苦労してなんとか使えるようにしました
とりあえず、配線を行う
ファームウェアの書き込みに使ったのが ・UART-USBケーブル or アダプター (シリアルピンを、パソコンのUSBと繋げるのに必要な部品) 今回はSWITCHSCIENCEさんのFTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)を用いました↓
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
・Windowsパソコン(windows8を使いましたがwindowsであればなんでも良いと思います, コマンドラインを叩くのでもしかしたらMacでもいけるかもしれません(未確認)) ・ジャンパーピン ・ブレッドボード ・ブレッドボード用スイッチ(2.54mmピッチ変換基板があれば無くてもいけると思います) スイッチは例えばこんなのです↓
- 出版社/メーカー: ELPA
- メディア: その他
- クリック: 1回
- この商品を含むブログ (1件) を見る
(ちなみに、最初はTWE-Liteのプログラム書き込み用の通信ケーブル接続可能なTWE-Lite Rで試してましたけど、うまくいかなかったのでアダプターを用いましたがたぶんTWE-Lite Rでもできます。 試してみたら追記しよう)
公式ページを参考に、配線してみたけど初心者にはわかりずらいです(笑)
UART-USBケーブルでの書き込み - TOCOS-WIRELESS.COM
そもそもピン配置が違うからな・・・
2.54mmピッチ変換基板にピンソケットをはんだ付して TWE-Strongを2.54mmピッチ変換基板に載せた状態にします こんな感じ↓
次にブレッドボードと繋ぎます、配線は、行ったやつを書くと(5iとか20hとか書いてあったらブレッドボードのアルファベットと数字のことです) ピッチ変換基板のピン配置と名前は以下を参照
2.54mmピッチ変換基板 - TOCOS-WIRELESS.COM
シリアル変換アダプターとブレッドボードの接続
・ブレッドボードの+列(電源)とFTDI USBシリアル変換アダプターのVCCをジャンパーピンで接続 ・ブレッドボードの-列(グランド)とFTDI USBシリアル変換アダプターのGNDをジャンパーピンで接続
シリアル変換アダプターとピッチ変換基板の接続
・シリアル変換アダプターのTXとピッチ変換基板の8ピン(DIO7, UART Receive Data(input), RXピンのこと)を接続 ・シリアル変換アダプターのRXとピッチ変換基板の7ピン(DIO6, UART Transmit Data(output), TXピンのこと)を接続
ピッチ変換基板とブレッドボードの接続
・ピッチ変換基板の39ピン(VCC)を電源に接続(+列に直接でも、5iとかに橋渡しでもどちらでも。僕は5iにジャンパーピンを挿して、5jと+列をさらにジャンパーピンで繋ぎました。以下同様にしました) ・ピッチ変換基板の40ピン(GND)をグランドに接続(-列でも橋渡しでもどちらでも可) ・ピッチ変換基板の27ピン(RESETN, Active Low Reset, リセットボタン(RST)のこと)をブレッドボードの28iに接続(後でスイッチと接続します) ・ピッチ変換基板の23ピン(MISO, SPI Master In / Slave Out, これがプログラム書き込み用のピン(PMG)の代わりになります、ここが最初わからなかったので苦労した・・・)
ブレッドボードにスイッチを接続
スイッチには足が4つあります。スイッチは2つ使います(RST(リセット)用とPGM(プログラムモード)用)
・スイッチの一つは、足4つをそれぞれブレッドボードの20f, 22f, 20e, 22eに接続しました(PGM用) ・スイッチのもう一つは、足4つをそれぞれブレッドボードの28f, 30f, 28e, 30eに接続しました(RST用) ・ブレッドボードの22aとマイナス列(グランド)を橋渡し ・ブレッドボードの30aとマイナス列(グランド)を橋渡し
これを行うと、↓の写真のようになると思います(わかりにくいですが・・・)
ここまで出来たら、次に電源をいれてプログラムを書き換えていきます!
プログラムの書き込みはjenprogで行わないとできなかった
ToCoStickとか、TWE-Lite DIPなどはTWE programmerってアプリを使えばドラッグアンドドロップで書き込みが出来て便利なのですが
TWE-Lite専用プログラマ - TOCOS-WIRELESS.COM
おそらくこの書き込みソフトではStrongに書き込みできません、なんかCOMポートを認識しないってエラーが出ます ↓
(このエラーのせいでよくわからなかったのでTWE-Lite Rは使ってませんが、たぶんTWE-Lite Rでも書き込めるので 後日やってみます)
パソコンにUSBケーブルを挿し、シリアル変換アダプターとつなぐ
書き込みするのに参考にしたサイト↓
TWE-Lite RでTWE-LiteにFWの書き込み。 - Qiita
USBケーブルと接続するとパソコンを電源として電流が流れます(ちなみにシリアル変換アダプターは3.3Vとなるようにしておいてください。購入した時点では、ジャンパーピンが3.3Vになるように接続されてました)
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス
次に、PMGスイッチを押しながらRSTスイッチを押して、RSTスイッチから指を離してからPMGスイッチから指を離すと TWE-Strongがプログラム書き込みモードで立ち上がります (これでTWE programmerでも書き込めるのかなと思っていたのでハマってしまいました・・・) (ちなみに、ピッチ変換基板にもPGMボタンとRSTボタンがついてるので、こちらでも可能だと思います)
次に、jenprogを立ち上げます UART-USBケーブルでの書き込み - TOCOS-WIRELESS.COMのページからjenprog単体をダウンロードしてもよいですし、ToCoNet SDK - TOCOS-WIRELESS.COMのページからToCoNetのSDK全部入りをダウンロードしてやっても良いです。僕はパソコンにSDK全部入りをダウンロードしていたのでそちらを用いました
SDK全部入りのフォルダを開いて、ディレクトリ(フォルダ)の階層で TWESDK/Tools/jenprog/bin と開いていって、binフォルダのなにもない所でshiftキーを押しながら右クリックすると 「コマンドウィンドウでここを開く」が出てくるので開きます 参考
TWE-Lite RでTWE-LiteにFWの書き込み。 - Qiita
(コマンドライン(黒い画面)が出てくるけど怖くないです大丈夫です)
コマンドラインが出てきたら
jenprog
とうつと、接続されているポートの名前(USBの接続ポート)が出てきます
例えば、TWE-Lite RでTWE-LiteにFWの書き込み。 - Qiitaのサイトだと COM3 に接続されているので
jenprog -t COM3
と打つと、状態が表示されます
プログラムを書き込んでみる
プログラムを書き込むためには、書き込みたいプログラムが同じフォルダ内にある必要があります(そのほうが簡単)
なので、先ほどのbinフォルダ内(TWESDK/Tools/jenprog/bin)に書き込みたいプログラムやファームウェアを置いて 書き込みます。 例えば公式サイトから、標準アプリをダウンロードしてきて アプリ・ダウンロード - TOCOS-WIRELESS.COM
TWE-Strong用のファームウェアをbinフォルダに移します。 今回僕はApp_TweLite_Master_JN5148_1_6_7.binというのを用いました(JN5148はTWE-Regular/Strong用、JN5164はTWE-Lite DIPなど用のプログラムみたいです)
App_TweLite_Master_JN5148_1_6_7.bin をbinフォルダ内にコピーしたら、またコマンドラインから入力を行います
jenprog -t COM3 App_TweLite_Master_JN5148_1_6_7.bin
と入力してみましょう。そしたら参考サイトのように
writing...
と出てきて書き込みが始まるはずです
ここでerrorなど出てくる場合は、配線が間違えているか プログラム書き込みモードになっていないので、PMGスイッチとRSTスイッチを用いてモードを切り替えて下さい。
出来てしまえば簡単なことなんですが、なんの説明もないのでここまで辿り着くのに時間かかりました・・・
なんにせよ、これでTWE-Strongが使えるようになったので色々実験できます!
わからないこととかあったらコメント欄などにどうぞ
追記 TWE-Lite-Rを使った書き込み方法
TWE-Lite-RとTWE-Strongを接続して、jenprogを使うことで書き込みすることが出来ました。
配線は下記のようにつなぎます TWE-Lite-Rのピン配置はTWE-Lite DIPのピン配置の名前を参考にしてください (数字はピン配置) (リンク先PDF注意)
TWE-Strong(ピッチ変換基板) - TWE-Lite-R
VCC(39) - VCC(28)
RX(8) - RX(3)
TX(7) - TX(10)
RESETEN(Active Low Reset)(27) - RST(21)
MISO(SPI Master In / Slave Out)(23) - PE
TWE-Lite-RのPEは、下記リンクの使用例Cで用いている、先端の5Pピンヘッダの真ん中になります USBアダプター TWE-Lite R(トワイ・ライター) - TOCOS-WIRELESS.COM
つないだ写真
あとは↑に記載しているように、jenprogでの書き込みが行えるようになります RSTボタンとPRGボタンはTWE-Lite-Rについてるボタンを押すことで出来ますので TWE-Lite-Rを持っている場合はこっちのほうが楽ですね
Raspberry Pi Type A+にスイッチサイエンスのバニラ基板(B+用)がぴったり合う
Raspberry Pi Type A+を使ってみています
ラズベリーパイのTypeA+を使って色々とやってみてます
raspberry pi typeAを無線LANに接続、リモート操作するのに詰まったので - ネット偽善者でもいいじゃない
んで、あまりType A (A+)を使ってる人はいないのか ユニバーサル基板などもType B(B+)のものが多いんですよね・・・
そんななか、スイッチサイエンスさんのところの基板を見てると 丁度良さそうなのがありました Raspberry Pi Model B+用バニラ基板(α版) - スイッチサイエンス
これ、よく見てみると「もしかしてA+でも余裕で設置できる?」と思ったので 調べてみるとやってる方がいらしまして
「へー出来るんだ、じゃあA+は既に持ってるから買ってみるかな」
ということで購入
バニラ基板付けてみた
バニラ基板付けてみました(はんだ付はまだやってませんが) ぴったり!
ラズベリーパイのGPIOピンからバニラ基板に取り付けるのにピンの大きさを変換する 2x20のピンヘッダが付いているので 広すぎず狭すぎずちょうどいい感じのスペースができてます
はんだ付もスペーサーも設置してないのでちょっと斜めってますが(;´Д`) スペーサーも付属しているので取り付けないとですね
これは良いものだ・・・ Raspberry Pi Type A+は消費電力も小さいみたいですし
Raspberry Piブログ : [コラム] Raspberry Pi Model A+は驚くほど省電力。乾電池2本で駆動に成功
ユニバーサル基板が使えるならとても便利そうですね
Raspberry Pi 2も発売になってるし・・・どこまで便利になるのやら(^_^;)
- 出版社/メーカー: 梅本合同会社, RS Components
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
みんなのRaspberry Pi入門 [対応言語:Python]
- 作者: 石井モルナ,江崎徳秀
- 出版社/メーカー: リックテレコム
- 発売日: 2015/02/05
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
VirtualBoxを使ってcentOSに入ろうとするがvagrant upでエラーがおきてしまう
久しぶりに開発環境にログインしようとすると Vagrant upしてcentOSにログインする際にエラーが起きてしまう
VirtualBoxが2015年2月12日にversion 4.3.22にversion up したらしく新しいのをインストールしてしまったのが 原因っぽい・・・
結局仮想開発環境を一旦削除して対応したけどまた環境構築からなのでめんどくさかった(´;ω;`)
ちなみに再び環境を整えようと思ってvagrant up までいったとこで似たようなエラーを吐き出しましたが
vagrant-vbguestプラグインがGuestAdditionsを無効にしてしまう - Qiita
を参考にしたら解決しました
続きを読むraspberry pi typeAを無線LANに接続、リモート操作するのに詰まったので
raspberry pi TypeAが必要になったので煽ってみました
色々なサイトさんが解説してるけどひとまず 「raspberry pi 入門」
みたいな感じでググってやると色々出てきましたが
RaspberryPi - Raspberry Pi に入門してみた。 - Qiita
詰まったところもあったので記載
有線LANは(ほぼ)必須
有線LANなくてもいけるかな、がんばろうと思いましたが 想像以上にうまくいかない というか、最初にraspberry piをアップデートしてあげたほうがよいみたいなのですが アップデートするのにインターネットに繋ぐ必要がある\(^o^)/
というわけで有線LANにつないであげた usbハブを用いて、変換アダプタを使ってイーサーネットのケーブルをつないであげる たぶんこれで自動的にネットには繋がるはず
↓
ターミナルで
$ sudo apt-get update
コマンドをうってあげる
↓
$ sudo reboot (アップデートした後なので、一応再起動してみる)
無線LANアダプタではまる
家電量販店で買ったELECOMの無線LANアダプタを使ってみたのですが どうもraspberry piに対応してなかったのか 認識はしてくれるけど無線LANとしては起動してくれないorz
ELECOM 無線LAN子機 コンパクトモデル 11n/g/b 150Mbps USB2.0 WDC-150SU2MWH
- 出版社/メーカー: エレコム
- 発売日: 2014/05/11
- メディア: Personal Computers
- この商品を含むブログを見る
raspberry piはSDカード、無線LANなど対応してるやつじゃないと使えないので レビューでraspberry piで使ってみたって人がいるか もしくは、マイコン基板を売ってるようなパーツショップさんで探すのがいいみたいです (僕はマルツさんで買いました http://www.marutsu.co.jp/ )
色々とレビューが叩かれてたりもするけど、確実なところでBUFFALOのやつを購入
BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM
- 出版社/メーカー: バッファロー
- 発売日: 2010/06/25
- メディア: Personal Computers
- 購入: 44人 クリック: 226回
- この商品を含むブログ (23件) を見る
こちらにしてやると速攻で認識されました ELECOMさんぇ・・・
無線LANを使ってリモートからraspberry piを操作してやる
raspberry piをディスプレイに繋ぎっぱなしでもいいのですが 無線子機(無線ドングル)を使うと たとえばMacのターミナルから、sshコマンドを叩いてやればリモートでraspberry piを操作してやることが出来ます その方法が2つ ・固定IPアドレスを振ってやる ・IPアドレスは自動で振り分けてやって、ホスト名を指定しておいてホスト名でMacなどからログインする
今回はひとまず固定IPアドレスの設定を行ってみた(後々必要になるので)
固定IPアドレスでログイン
RaspberryPi - Raspberry PiでWiFi接続 - Qiita
などを参照
が、詰まる・・・初心者には厳しいところがいくつかあったので記載
おもいたったがきちじつ - RaspberryPi - 使いこなす - IPアドレスを固定する
を参照した
固定にするIP addressは最後の数字だけ固定できるだけ
なぜかこの辺記載されてないのですが、IPアドレスって
192.168.☓☓☓.△△△
みたいな感じで設定されているのですが、☓☓☓のところは自前の無線サーバーの値みたいなので 自分で確認してから設定してあげないといけません (どのサイトも当たり前のように 192.168.1.200 とか 192.168.2.200 とかで設定してたけどそれじゃ繋がらなかったので )
確認方法としては、raspberry pi のターミナル(コマンドプロンプト)のところで 無線LANまたは有線LANを接続した状態で $ ifconfig
ってコマンド打つと、おもいたったがきちじつ - RaspberryPi - 使いこなす - IPアドレスを固定するのサイトでは例えば eth0 のところ(有線LAN)のところに
inet 192.168.2.104
って出てきてます。 この場合は、固定IPアドレスを指定する時は
address 192.168.2.△△△
となるので自分の使ってるLANを確認してあげなければならない(たぶん)
それ以上に大事なのがgateway ゲートウェイ
次に、コマンドで
$ route
と打ってやると、ゲートウェイというのが出てくるので これはその値を用いるみたいです
おもいたったがきちじつ - RaspberryPi - 使いこなす - IPアドレスを固定するのサイトでは例えば ゲートウェイ 192.168.2.1 って出てますね
この値をそのまま用いてください
他のサイトとかだと、当たり前のように何も言わずに
gateway 192.168.2.254
とか設定してたからなんなのかと思ったよ・・・初心者には厳しい(`;ω;´)
全体の設定をまとめると /etc/network/interfaces で
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 #iface wlan0 inet dhcp iface wlan0 inet static address 192.168.☓☓☓.△△△ #ここはifconfigで確認した☓☓☓の部分の数字と、△のところは自分で好きな数字をいれる。わからなかったら200がおすすめ netmask 255.255.255.0 gateway 192.168.☓☓☓.◯◯◯ # ここはroutesコマンドで確認したゲートウェイの番号 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
としてやればつながるはずです
これで、raspberry piを再起動してあげて($ sudo reboot) 、macのターミナルなどから $ ssh pi@192.168.☓☓☓.△△△
と自分で設定してあげたアドレスを打ち込むことでリモートでraspberry piを操作することが出来るようになりました
Mac使っててwikipediaに繋がらない時の対処方法
Wikipediaなどに繋がらないのはipv6 or AVASTが問題?
原因として
・ipv6が原因?
・セキュリティソフトのavastが原因?
mac book airを使ってるのですが wifiの種類によってはwikipediaなど特定のサイトに繋がらないという問題がありました
しかしエラーコードの ERR_EMPTY_RESPONSE
を検索してもなんか情報があまり出てこず・・・ というか似たような現象が起きてるブログなんかもブロックされて表示できない\(^o^)/ みたいなことが起きたのでこうやったら対処できたよ! ってやつを
ipv6をいじってみる
色々調べてみると、もしかしたらネットワーク環境のipv6というものをいじればいいんじゃないかとなって いじってみると確かにページが表示されるようになりました!
ipvに関しては↓
【Wi-Fiルータ】IPv6通信(光テレビ・ウイルスクリア)ができない/設定...
WINDOWS7 「識別されていないネットワーク」と出てインターネットにつながらない - マイクロソフト コミュニティ
IPv6 - FacebookとGoogleだけ、やたら遅い場合の対処 - Qiita
対策としては
Dockから
「システム環境設定」
↓
「ネットワーク」
↓
下のほうにある「詳細」
↓
TCP/IPタブの中にあるIPv6の設定を 自動からリンクローカルのみに変更してみる
これでwikipediaなどに接続できなかった問題を 解消することができました
avastのシールドをoffにすると繋がる
自分はセキュリティソフトでavastを入れてみてるのですが avastによってアクセスがはじかれてるのもあるみたいです
というわけでavastの設定を行いましょう
アプリケーションフォルダの中の Avast Mac Securityアイコンをクリック
↓
一番したのPreferenceをクリック
↓
Web Shieldの settingをクリック
↓
Enable IPv6のチェックを外す
↓
Done
これで繋がるようになりました
どちらでもよいとは思いますが、なんかIPv6を使ってるとページの読み込みが遅くなる場合があるみたいですね
IPv6 - FacebookとGoogleだけ、やたら遅い場合の対処 - Qiita
このへんもうちょっと調べてみてよいほうを選ぼうかなーと思います。
Three.jsのBoxGeometryでそれぞれの面に別々の色を指定する方法
Three.jsで直方体の面に別々の色をあてたいので調べてみた
HTML5による物理シミュレーションを読んでいるのですが
HTML5による物理シミュレーション―JavaScriptでThree.js/jqPlo
- 作者: 遠藤理平
- 出版社/メーカー: カットシステム
- 発売日: 2013/02
- メディア: 単行本
- この商品を含むブログ (4件) を見る
物体の面ごとに違う色などを指定してあげたいので調べてみた
(1) MeshFaceMaterialを使う
こちらの記事を参考にしました THREE.jsのCubeGeometryで六面別々のMaterial(Texture)を使う方法 - tsuge development page
しかし2年前の記事だからなのかちょっと記述方法が今と異なってたので訂正 (three.jsのリビジョンはr69を使ってます)
MeshFaceMaterialメソッドを使えば複数面をバラバラに指定することが出来ます 例えば直方体を描写する時は、一番シンプルなやつだと
//箱型オブジェクトの宣言 var geometry = new THREE.BoxGeometry(20, 20, 20); //材質の宣言 var material = new THREE.MeshLambertMaterial({ color: 0xFF0000 }); //オブジェクトの生成 mesh = new THREE.Mesh(geometry, material); //シーンへの追加 scene.add(mesh);
のように記述しますが、六面に異なる色を付けたい場合は配列を用いて
//箱型オブジェクトの宣言 var geometry = new THREE.BoxGeometry(20, 20, 20); //材質を配列で指定する(箱型なので6面分) var materials = [ new THREE.MeshLambertMaterial({color: 0x00ff00}), new THREE.MeshLambertMaterial({color: 0x00ff00}), new THREE.MeshLambertMaterial({color: 0x0000ff}), new THREE.MeshLambertMaterial({color: 0x0000ff}), new THREE.MeshLambertMaterial({color: 0xff0000}), new THREE.MeshLambertMaterial({color: 0xff0000}) ]; //MeshFaceMaterialで材質を宣言 var material = new THREE.MeshFaceMaterial(materials); //オブジェクトの生成 mesh = new THREE.Mesh(geometry, material); //シーンへの追加 scene.add(mesh);
のようにします。 MeshFaceMaterialの引数にmaterialsを用いてあげます。
ドキュメントに書いてあるんだけどちょっとわかりにくいんだよね・・・英語だし http://threejs.org/docs/#Reference/Materials/MeshFaceMaterial
(2) for文でロープ表現を用いる =>ランダムに色が指定されます
これは、three.jsのファイルをダウンロードした時のexampleフォルダに入ってるcanvas_geometry_cube.html内の記述を参考にしました
コードを書いてやると
//形状オブジェクトの宣言 var geometry = new THREE.BoxGeometry(20, 20, 20); //for文で材質をランダムに指定 for ( var i = 0; i < geometry.faces.length; i += 2 ) { var hex = Math.random() * 0xffffff; geometry.faces[ i ].color.setHex( hex ); geometry.faces[ i + 1 ].color.setHex( hex ); } //材質の宣言 var material = new THREE.MeshLambertMaterial({ vertexColors: THREE.FaceColors }); //オブジェクトの生成 mesh = new THREE.Mesh(geometry, material); //シーンへの追加 scene.add(mesh);
です。0xffffffをランダムな数字で掛け算してやることで毎度違う色を生成してるみたいです
今のところはこの2つなので他にもあれば便利だなーと思います。 なお、テクスチャをそれぞれの面で別々に指定する場合も最初の方法を使えば出来そうです