超雑アバターの作り方

センスも時間もないけどマイアバターを持ってみたい。もしくは人外のアバターを生成してみたいという方向けに書きます。

つよつよな人はアドバンスお願いします。

要件定義

・clusterで読み込んで使える

以上.ベースはこちらを参考にしました.

Cluster用のVRアバターを1日で作るまで|kondoyuko|note

私の行った手順まとめ

  1. MagicVoxelで箱型のモデルを作成
  2. OBJでエクスポート
  3. Blenderで読み込み人型ボーンを追加
  4. ボーンとモデルを全選択し自動重み付け(*1)
  5. 同様の選択のままFBXでエクスポート
  6. 下記リンク内の「UniVRMの導入」「ボーンの調整」「変換しよう」だけやる
  7. 【Unity】人型アバターのFBXファイルをVRMファイルに変換する | STYLY
  8. 出てきたファイルをClusterにアップロード(*2)

参考文献に詳しく書いてあるので自分が詰まった点を2つだけ解説

*1:選択順序大事

オブジェクト→アーマチュアの順番.Modifiersの追加も忘れずに!

引用元:[Blender操作メモ]アーマチュアについて、自動ウェイト設定について、自動ウェイトが選択肢に現れないとき | 宮崎大学コンピュータクラブ

f:id:massiro-myaon:20200420193531p:plain

*2:Use Experimental Export の選択忘れず!

f:id:massiro-myaon:20200420193110p:plain

テクスチャのところ飛ばしたので半透明になりました.(これはこれでよい?)

こちらは日頃使っているFusion360で設計してOBJエクスポート!

色は最後のUnityのところでMaterial追加する形で実現しました.

f:id:massiro-myaon:20200420191152p:plain

ここまでを簡単に動画にまとめたので参考までに活用下さい!

的な動画をそのうち作りたいなw

 

九工大研究室見学

3月末の約1週間,九工大の田向研究室でお世話になりました. 高専での大学院説明会で知り合いRoboCupJapanの見学を兼ねてのインターンをお願いしました. RoboCupJapan自体は昨今のCovid-19の影響で中止になりましたが,インターン自体は新研究室生とともにROSの講習を受けました.

九工大高専からの編入生も多く,田向研究室では半分近くが高専出身でした(先生も含む) 特徴としては
・学部と院の場所が離れている.
・早稲田と北九州市立大学が併設されている学園都市.
・学生プロジェクトと呼ばれる技術系の部活のような取り組みがある.
・院進学の試験は4回.高専卒で希望先研究室と交流があれば概ね1回目の推薦で合格することが多いらしい.

田向研究室はRoboCup@Homeの主研究室としてホームサービス用ロボットにも取り組んでいます.
その中で使われているROSの技術をRosWikiやTurtlebotを活用して画像認識やSLAMの技術を体験させて頂きました.

また入試説明会に乗じて他研究室の見学もさせて頂き研究室ごとの雰囲気や特色の違いに驚きました.
田向研究室 – 半導体・ICT・ロボット産業を牽引する“脳型計算機”の開発を目指し研究室教育を通してこれら産業をリードする優秀人材を育成します。

専攻科での長期インターンも無くなり不安が募りますが,情報を集めて現場を見ながら主体的な進路選択を目指します!

卓球と黒猫

卓球部恒例の卒業生追い出し会にて追い出されました〜
卒業生の最後のひとことはその場で考えるとはいえ、その人の個性や生き方みたいなところが密に出てくるので、毎年メモしたりしていたことを思い出します。 ということで今年私が言った(言いたかった)事を自分への戒めも込めて残しておきます。

私は4年の高専大会まで現役でやってました。 途中で抜けた身として感じた事が2点ほどあるので伝えます。 1つ目は同じ趣味をこれだけの人数・規模で嗜めるのは今しかないという事。 紛いなりにも外の社会を色々と体験してきた中でこのことの貴重さに気づかされました。 是非今のうちにしっかり楽しんで下さい!
2つ目はより自由な部活になって欲しいという事。 私は引退してからの1年半で色々な経験をすることができました。 しかし卓球部とものづくり活動の両立も考えていた中で、もっと早くから兼部等をしていれば工夫して両方対応できたのかなとか思うわけです。将来的にやりたいことにシフトして行く人が増えてきた中で、サークル部員のような形でも続けて行きやすい雰囲気を作っていって欲しいし、現役部員もいろんなことに挑戦してみて欲しいと思います。

昨日は飲み会の途中にOBの先輩に1時間近く進路相談していただいて非常に有意義な時間がありました。リアルでは不器用な私が同じことをできるとは思いませんが私なりに次の世代に伝えつつ聞きつつしていこうと思っているので気軽にコメント下さい!

国旗キーホルダー🏳‍🌈

私事ですがトビタテ留学Japan12期に採択されました👏 それに伴い留学話のきっかけになればと国旗を模したキーホルダーを作ったので今日はその作り方を紹介します。 f:id:massiro-myaon:20200229020908j:plain まずFusion360で3Dデータを作ります。 ただの直方体でも良いですが色塗りしやすいように段差を付けました。


国旗キーホルダー作り

これをSTLファイルにエクスポートしてKISSlicerを経て3Dプリンターに突っ込みます。 日本&オーストリアは白 スウェーデンは青のPLAで造形したのちアクリルカラーで塗りました。

お近くのFabスペースを使うか自分で3Dプリンターを導入してぜひお試しください!

blackuma.hatenablog.com

分岐点

進路選択に迷い迷走している私ですが、いつまでもこの状態でいる訳にもいかないので閲覧数2,000回を超えた今、自分のココロの中についても描いていけたらなと思います。

私は豊橋技科大を推薦受験⇒一般受験し落ちました(勉強不足+書類選考のみで経験を活かせなかった)。専攻科を滑り止めに受け(専門科目免除なし)合格していたのでプラス2年間同じ高専にお世話になる予定です。

3年時からモノ作りや教育(布教)に目覚めてモノコトイノベーションやコンテスト出展や高専ロボコン参加などをしてきた私は2年半の間に多くの事を経験しました。同時に広がった世界に対してどう向き合えばいいのか分からなくて収束のための時間というものを探す形で進学を選んだのだと思います。

ここで私の「計画性」について考えてみたいと思います。研究室優先配属の手続きを忘れていたことやロボコン+卓球+進路関係+現実逃避による時間不足など色々やらかして来ました。しかし、私の考えとして「やってみないと分からない」ものは「とりあえずやる」というものがあります。特に最近はこの傾向が強いがために、マイナス面で言えば予定や締切の管理ミスやタクス過密による精神不安定が生じております。ですが私はもう少しこのままで格闘する事を考えています。ちょっとしたミスや不便感を培った技術で解消したり、自分の経験を他の人がより簡単に得られるような発信をしたりする事が今の自分になんとかできる事だと思っています。自分の軸がより尖ったものとなるよう努めてまいります。

分身ロボもどき #IT_Party

友人の頑張りにより本州最西端でITパーティーが開かれました🎊

connpass.commargaritan.hatenablog.com

最近オリィ研究所にはまっている私はRaspberry Pi を用いた自作分身ロボットについてお話させていただきました。

ロボコン部署紹介.pptx - Google ドライブ

今回のブログでは実演に用いた分身ロボットの作り方を中心に書いていきたいと思います。早速ですが、Raspberry Piを遠隔操作するために「TeamViewer」というアプリを導入します。ラズパイ関係なく簡単にPCの遠隔操作が可能になるのでおすすめです。

iot-plus.net

次に回路・ハード周りを構築していきます。

基本的には周南ロボコンの時に参考にした「ZeroBot」と同じ構成です。

https://cdn.hackaday.io/images/6417841519894620814.png

https://hackaday.io/project/25092/instructionsd

電源周りは面倒なのでモータードライバーに単3電池4つを直列に繋ぎ

モータードライバーはBanggoodから輸入いたしました。

http://デュアルチャンネルL298N DCモータドライバボードPWMスピードデュアルHブリッジステッパモジュール モジュール基板 from エレクトロニクス on banggood.com https://banggood.app.link/GYGmJW1vv2

ブレッドボードやジャンパーピンで回路を繋ぎ

タミヤ製品を使いながら適当にハードを完成させます。

 

そしてロボット駆動用のGUIを作ります。

Tkinter を使い4つのボタンを配置。

電卓のレイアウトを作成する - Narito Blog

そしてそれぞれ呼び出す関数を定義し

GPIOピンを直接制御します。

Raspberry Pi のGPIOをPythonから利用する - Qiita

こちらが最終的なプログラムです。

github.com

最後にストリーミング。

Raspberry Piと動画モニタアプリMotionで、晩ご飯作成風景を家庭内ストリーミング配信する - Qiita

今回はぎりぎりのスケジュールでしたので、ラズパイのストリーミング配信をラズパイ上で表示させるという頭の悪そうな事をしています。ここはぜひより良い方法を探して教えて下さいますようお願いしておきます。


f:id:massiro-myaon:20191218203617j:image

そんなこんなで現時点の分身ロボットの出来上がりでございます!発表本番でも自宅にロボットを置いた状態で発表会場から動かすということができ、喜んでいただけたようなので良かったです(本当は会場に分身を置いて自宅から参加したかったw)!

分身として使う為の音声周りの機能追加やハードのデザイン向上などやるべき事はまだまだありますが、マイペースにやってまいります🍵

2進数アドベントケーキ🍰

Fusion360主催の #クリスマスオーナメントコンペ2019 に出品しました。
今年はアドベントカレンダーが流行ったので、私はクリスマスケーキを
模した2進数アドベントカレンダーの製作に取り組みました。


2進数アドベントケーキ🍰


もともとArduino Nano用の箱型ケースは設計・製作していたのでLEDが
通る穴をあけた蓋を付けるだけなのですがクリームが覆われているような
形を意識しました。まあモデリング技術でいえばほかの参加者に到底およ
ばないので、実際に造形してコンセプト通りに動くようにしていきます。

とりあえず蓋をSTLに変換して出力。その間に出力ピンの対応を確認。
正しくは抵抗を挟んで電流等を調整する必要がありますがそのような
隙間もないので今回は直刺しでいきます。

f:id:massiro-myaon:20191208115853j:plain

プログラムは配列を活用しながら計算・出力していきます。
2進数⇒10進数の変換は忘れかけていましたがこちらのサイトに救われました。

C言語入門 - 10進数を2進数に変換 - サンプルプログラム - Webkaru

int day=17;
int value[5];
int anode[]={11,8,5,2,0};
int casode[]={1,4,7,10};

void setup() {
  //Serial.begin(9600);
  pinMode(0, OUTPUT); //2^0
  pinMode(1, OUTPUT); //GND
  pinMode(2, OUTPUT); //2^1
  pinMode(4, OUTPUT); //GND
  pinMode(5, OUTPUT); //2^2
  pinMode(7, OUTPUT); //GND
  pinMode(8, OUTPUT); //2^3
  pinMode(10, OUTPUT); //GND
  pinMode(11, OUTPUT); //2^4
  for(int p=0;p<4;p++){
    digitalWrite(casode[p], LOW);
  }
}

/* 10進数-->2進数変換関数 */
void ChangeFunc(
unsigned long int DecimalNumber, /* 10進数[in] */
char* BinaryString) /* 2進数文字列化[out] */
{
  int i,k;

  for(i = 0, k = 4; k >= 0; i++, k--)
  {
    if((DecimalNumber >> i) & 1)BinaryString[k] = '1';
    else BinaryString[k] = '0';
  }
  BinaryString[i] = '\0';
}

void loop() {
  int i;
  char BinaryString[5]; /* 2進数文字列化 */
  
  ChangeFunc(
  day, /* 10進数[in] */
  BinaryString); /* 2進数文字列化[out] */
  /* シリアルポートに文字列を出力 */
  /*Serial.print(day, DEC);
  Serial.print("\n");
  Serial.print(BinaryString);
  Serial.print("\n");
  */

  for(int i=0;i<5;i++){
    if(BinaryString[i]=='1'){
      digitalWrite(anode[i], HIGH);
    }
    else digitalWrite(anode[i], LOW);
  }
  delay(86400000UL);
  day = day-1;
  while(day<=0){
    for(int s=0;s<5;s++){
      digitalWrite(anode[s], HIGH);
    }
    delay(1000);
    for(int n=0;n<5;n++){
      digitalWrite(anode[n], LOW);
    }
    delay(1000);
  }
}

シリアルポートを確認用に使っていましたがRX/TXのピンを出力に使って
いるためコメントアウトしています。
カレンダーと言いながら、カウントダウンになってしまいましたが
クリスマスまで問題なく動いてくれると信じて常設しておきます🎅

追伸:応募方法ミスってました。悲しみながらデータ共有の用意を致しましたので
是非皆さん作ってみてください😭
https://a360.co/2rfe0O2