チラシの裏をどう作るか
雑に書き連ねた日々のチラ裏のメモ書きをどう管理するか。
Scrapboxを始めてみたので使うにあたって考えたこと等を書いておこうと思います。はてなブログからScrapboxに移行したというわけではなく、ブログにならないような大量の雑文を管理するツールとしてScrapboxを使い始めました。
残したいもの
URLがあるもの
- テキスト
- 画像・動画
URLがないもの
- テキスト
- 考えたこと
- やったこと
- やりたいこと
ツールに求めるもの
- 考えたことややったことを雑に書けさえすればいい
- リッチなエディタは不要
- Markdownの見出しとリストがあればいい
- テキスト以外のコンテンツはURLで残すことができる
- 画像の添付機能等は不要
- クラウド上に残したい
ツール遍歴1: Evernote
pros
- クラウド上で管理できる
- 雑に何でもクリップできる
- ノートの移動やマージが簡単にできる
cons
ツール遍歴2: Boostnote (& Google Drive)
pros
- 軽い
- Markdown対応(重要)
- 必要なものだけがある
- プラグイン等も不要
- Evernoteのように同期処理がエディタの動作に干渉しない
- Google Driveなので!
- Github上でバグ報告ができるし対応が早い!
cons
- 特にない
- 強いていえばMarkdownエディタであること(矛盾)
というわけで、Evernoteを愛用してたんですが重いしMarkdownに対応していなかったので、ここ最近はBoostnote&GoogleDriveを日常的に使っていました。こういう感じで半ば日課のように雑に書き連ねてます。
ツール遍歴3: Scrapbox
大好きサービスでプレミアム会員継続中のGyazoと同じ会社が作ってるScrapboxというものがあるらしいと、結構最近になって存在を知りそのコンセプトに共感してScrapboxに移行してみることにしました。Scrapboxの思想等については別の方がわかりやすく解説されていますので、そちらを参考にしていただければと思います。
参考
- Scrapboxは脱階層? なぜ文章内は階層なのか? - Rakusai Public
- ScrapboxとMarkdownの思想的な違い - Rakusai Public
- Scrapboxベストプラクティス - 西尾泰和のScrapbox
Scrapboxを触ってみてわかったことなんですが、Markdownは簡単だけどプレビューモードが必要な程度には難しいんですよね。個人的にはMarkdownのうち見出しとリストとリンクぐらいしか使ってなかったのでMarkdownの仕様は少し重い感じがあって、Scrapboxの箇条書き文化にすぐに馴染むことができました。
情報整理の手法として限界を感じていた階層・ラベル管理システム、テキストを記述する行為を少し難しくしていた各種記法やプレビューモードから開放された気分ですが、Scrapboxにも不満がないことはないので使ってるうちにまた気が変わるかもしれません。例えばリンクを辿るコストに比べて辿ったリンクを戻るコストが大きいためにリンクを開くのを躊躇してしまうことなどです。
まぁ、しばらく使ってみます~~~✌ ('ω') ✌
最後に、書きながら思ったのですが、自分自身Evernoteをフル活用していたときはEvernoteに不満はなかったし、Boostnoteをフル活用していたときはMarkdownに不満はなかったし、使い倒してみてわかることや新しいものに触ってわかることがたくさんあるので、その人に合った、その人のタイミングで手段を変えていくのが良いのかなと思います。特定のアプリケーションについてメリット・デメリットをいくつか挙げましたがあくまで個人の感想としてあまり鵜呑みにしないようにしてくださいませ。
✌ ('ω') ✌
制作日記: 年末年始
2017/12 ~ 2018/01 上旬の作業記録。
年末からリギングの動画とトポロジの写経という沼に落ちています(現在進行系
やったこと
リギングの勉強
Sergio Mucinoさんの教則動画「Character Rigging Course」で引き続き勉強中です。
▼ Episode30までで学んだこと
- ガイド用のリグの作成
- メインとなるリグの作成
- IK/FK リグとコントローラ作成
- IK/FK ブレンディング
- 鎖骨とか足の凝ったリグ作成
- 首・腕・背骨のねじれ用リグ作成
- リグのモジュール化
Episode64のうち30が終了。約17時間。
前まではリグというと、ボーン一組とIKゴールがいくつかあるだけみたいなイメージだったので、アニメーション用の様々なコントローラを用意したり、ノードでジョイントの連動や制限を行ったり、モジュール化を行って再利用しやすくしたり、やることのすべてが目新しくて勉強になります。小難しいことを抜きにして一言で一番の大きな成長点を挙げるなら、スケマティックへの恐怖心がなくなったことです。
こんな感じで一見いい感じに出来てきたなぁと思ってたんですが、ガイドのジョイントの位置がずれてたり、回転軸が関節の曲がる方向と違ったり、IKとFKを切り替えたときにジョイントが大幅にずれたり、色々と細かいところで崩れていました。コンストレイントが張り巡らされているために修正がなかなか面倒だったので最終的に、作ったロケータを流用しつつまたEp1からやり直すことにしました(3回目
動画を追うことに必死になって確認しないといけないポイントを見ることができていなかったので次こそは!
トポロジの写経
少し前にtwitterで「このCMで使われてるローポリモデル風のワイヤーフレームがモデラーから見ると気持ち悪い!」みたいなツイートが流れてきてたのでその画像を見たんですが、自分の能力不足で何が気持ち悪いかわからなかったんですよね。むしろ自分が作るトポロジより綺麗に感じましたw
こういう美的センスは「良いモノ」にたくさん触れることで培われるだろうと思い、トポロジの勉強になるような何かを探していたところArtStationで素敵な投稿が見つかったので、トポロジをパク……写経(模写)することにしました。リギング動画がそろそろスキニングの作業に入っていく流れだったのでその前に作業用のモデルを見直したかったというのも理由の一つです。
https://www.artstation.com/artwork/eNq43
素晴らしいですね。素晴らしいと思うんですけど、今の自分には何がどう素晴らしいのか力不足でちゃんと認識出来てないんだろうと思います。本当はもうちょっとポリゴン数が少ない方がわかりやすくていいんですが、ローポリはそれはそれでチューニングされすぎて思考の跡が省略されてたりするのでやるならとことんやるかと思い、お手本そのままの解像度で素体にポリゴンを貼り直してみてます。
ZOZO SUITできた
実際に手を動かしてやってみると、やっぱり単純なコピー作業にはならなくて、「あれ枚数が狂ってる?どこで間違えた?試しにループ選択してみよう。螺旋状に想定外の大量のポリゴンが選択された!逆に要点のループをちゃんと抑えておけばループの間はブリッジで埋めればそれなりにみえる。画像でここは確認できないから推測しないと」みたいな試行錯誤を繰り返していました。
過去に見かけた「エッジループやポリゴンループが大事だよ」「ZRemesher(ZBrushの自動リトポ)するときは螺旋が出来ないようにしないとつらいよ」という先人の言葉の意図が今までよくわかってませんでしたが、やっと点と点が繋がってきた気がします。
- よく修正しそうな場所のループ選択がしやすい
- ループが螺旋になっておらず閉じている
- 人体の流れに沿っている
とりあえずこの3つがちゃんと出来ていればマシなトポロジになるのではないかなぁと思いました。ループ選択がしやすいと部分的な修正がやりやすいし、ループが閉じていることで修正の影響範囲を小さく出来ますし、人体の流れに沿っているとアニメーションで破綻しにくくなるのかなぁというあたりが理由です。
リギング動画は大きな手戻りも発生していてまだまだ先が長いですが、FacialRigを組むのを楽しみに頑張ります。それではまたしばらく沼へ。
そういえば明けましておめでとうございます。今年もよろしくお願いします!
制作日記: テキスト起こしの続き/字幕化
昨日、GCPのSpeech APIを使用して、動画の音声をテキストに起こしましたが、csvから字幕用のsrt形式に変換することで動画と一緒に再生することが出来ましたのでメモを残しておきます。
フォーマット変換
00:22:33,00:23:44,Hello 00:24:10,00:24:15,Fuck
- 変換後 srt
1 00:22:33,000 --> 00:23:44,000 Hello 2 00:24:10,000 --> 00:24:15,000 Fuck
字幕対応のプレイヤーで再生
メニューから変換後のsrtファイルを読み込むだけです。 設定画面から字幕位置やフォントの変更なども出来ます。
srt変換 rubyスクリプト例
require 'csv' dir_path = 'D:\result\\' def wrap(s, width = 80) s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n") end csv_files = Dir.entries(dir_path).select{ |filename| filename.end_with?('.csv') } csv_files.each do |file| blocks = [] csv = CSV.read(dir_path + file, headers: false) csv.each_with_index do |row, index| start_time = row[0] end_time = row[1] body = row[2].strip block = <<"EOS" #{index + 1} #{start_time},000 --> #{end_time},000 #{wrap(body, 120)} EOS blocks << block end srt = blocks.join File.binwrite(dir_path + file.split('.').first.gsub('audio_', '') + '.srt', srt) end
約35時間分の動画の非同期音声認識にかかった料金
4327円
登録時のおまけのクレジットで余裕で支払うことができます。
制作日記: 動画でRiggingのお勉強
ちょっと前から上のジーナさんモデルを作っていて、ACSでリギングを行っていたのですが、独自のボーンを追加したいときはどうすれば……フェイシャルリグってどう組めばいいんだ……と、標準機能の知識が不足しすぎてて迷走していました。
そんな中、コメントで Character Rigging Course というチュートリアル動画(有料・35時間)が勉強になると教えていただきました。英語の文章は少しわかるのですが、動画となると自信ないなぁと思いつつ思い切って購入してみました。現在、35時間中の6時間分ほど見終わったのですがもう本当に目から鱗がぽろぽろ落ちる感じです。ヒアリングはあまり出来ないので操作を真似して盗むスタイルの勉強になるのですが、それでも十分といっていいほど勉強になってます。
ただ、やっぱり解説とかが聞き取れないのはもったいないなぁと思い始め、 GoogleCloudPlatform(GCP) の Speech API を利用しての自動テキスト起こしを試してみました。
Riggingのお勉強のためにSergio Mucinoさんの動画見てるけどあまり英語が出来ないのが悔やまれるなぁ
— 焼き鳥つくね (@cignoir) 2017年11月25日
twitterでのしげぽんさんとの会話で思いつきました💡
下準備
動画から音声ファイル抽出
GCP 関連
プロジェクト作成
Speech API有効化
サービスアカウント作成
音声ファイルをCloudStorageにアップロード
GCP のことはよくわかっていないので他のサイト様の解説におまかせします。本当は今日発表された AWS の Transcribe を試したかったんですが申請が必要だったので……
音声認識スクリプト実行
必要な情報
- プロジェクトID
- 認証情報(json)のファイルパス
- サービスアカウント作成時にダウンロードしたファイル
- 音声ファイルのCloudStorage上のパス(gs://~)
gem インストール
$ gem install google-cloud-speech
スクリプト
require "google/cloud/speech" require 'csv' # 音声認識結果の整形用(適当 class Google::Cloud::Speech::Result def start_time Time.at(@words.first.start_time).utc.strftime('%X') end def end_time Time.at(@words.last.end_time).utc.strftime('%X') end def simplify [start_time, end_time, @transcript] end end project_id = "***" # プロジェクトID credentials = "/path/to/credentials.json" # 認証情報のファイルパス src_audio_file = "gs://~" # CloudStorage上の音声ファイルパス dst_csv_file = "result.csv" # CSV出力ファイルパス encoding = :flac # 音声ファイルの形式 language = "en-US" # 音声の言語 speech = Google::Cloud::Speech.new(project_id: project_id, credentials: credentials) audio = speech.audio(src_audio_file, encoding: encoding, language: language) response = audio.process(words: true) response.wait_until_done! result = response.results.map(&:simplify) CSV.open dst_csv_file, "w" do |csv| result.each{ |row| csv << row } end
結果
英語動画の自動テキスト起こしいけそう😀MODOがMotoになってるけどw pic.twitter.com/m2oKdYAHRJ
— 焼き鳥つくね (@cignoir) 2017年11月30日
こんな感じで概ねうまく認識出来ていました。非同期の音声認識をやってる人やRubyの例が少なかったので参考になれば幸いです。料金は見積もりが間違っていなければ35時間分の動画で$50ぐらいみたいです。メリットを考えたら全然安いですね。
師走
年内は動画のお勉強で終わりそうです。ジーナさんの続きの制作は年明けになると思いますが成果を発揮できるように勉強を頑張ります。
制作日記: 妲己
少しトゥーン風に色味を修正 pic.twitter.com/zGPFMwdzqf
— 焼き鳥つくね (@cignoir) 2017年10月22日
原作ファンの方すみませんすみません、モンストの獣神化妲己の二次創作です。
今回は本当に色々と学びが多くて大きく成長出来たと思うし、いつにも増して楽しい制作となりました!
出来たこと
- 比較的短い制作期間
- 平日3時間 * 14日ほど。今までは最低2ヶ月ぐらいかかってた。
- テクスチャの手塗りに挑戦
- 厚みのある髪のワークフローが自分の中で整理出来てきた
出来なかったこと
- 表情付け
- 口内・舌
- 炎や煙のいい感じのエフェクト
- 狐の制作
- 動物の制作経験がないので是非リベンジしたい
あとは、イラストに近づけようとするほど、魅力を引き出す力が圧倒的に不足していることも感じました。精進します。
次に頑張ること
表情作り。
簡単な1つのモーフマップを使用した表情作りは出来るのですが、複数連携させるフェイシャルリグでやりたいです。やり方がさっぱりなので調べるところから地道にやっていこうと思います。
制作日記: SyFlex for Modo を触る
髪とスカートの物理シミュレーションは自分の環境や用途で出来るのだろうか、出来るにしても出来ないにしてもそれらを知った上でセットアップ作業をするのが段取りが良いだろうということでソフトボディとSyFlexを触ってみました。
ソフトボディ
- 【modo機能紹介】ソフトボディダイナミクスの基本設定 その1 - YouTube
- 【modo機能紹介】ソフトボディダイナミクスの基本設定 その2 - YouTube
【modo機能紹介】ソフトボディ機能を使用した変形メッシュとの衝突 - YouTube
ここらへんの動画を参考に使い方を学びました。自分のやり方が悪いのか環境が悪いのかわかりませんが、少し複雑なメッシュでアンカーを設定すると重くてまともに作業できず他の方法を探すことにしました(諦め早い
SyFlex for Modo
クロスシミュレータ界(?)で有名らしいプラグインがModoにも対応してるみたいだったので試してみました。金額は$200 ぐらいです。まずはスカートをクロスに設定するためにAddClothし、身体にCollideMeshを設定していきました。しかし、何度やっても身体がスカートを突き破ってしまい、丸一日設定をいじって調整してたんですが、うまくいかず。最終的に原因は設定ではなく、ローポリすぎたことだとわかりました。動作が重いイメージがあったのでポリゴン数減らしていたのがまずかったようです。CollideMeshの仕様や形状が可視化されていればもっと早く原因を特定出来た気がしますがまぁ盲点でした……
スカートを再分割してやり直すとデフォルトの設定ですんなり動いてくれました!
Pinのテスト
クロスシミュレータならではの美しいドレープを作ることができました。これだけで結構感動的です。スカートを手でつまむ挙動はスカートのつまむ部分に設定したPinに手を触れさせて無理矢理吸着させています。ただし、これだと手以外の部分(手首など)がスカートに触れてもそことスカートのPinが吸着してしまったり、太ももにくっついてしまったり色々な問題があります。
Nailのテスト
Pinの問題を解決するために、Nailを使用してみました。Nailを使うことでスカートの一部を空間に固定し、それをロケータと連動させ、Pinでやったのと同様の動作を実現できました。こちらの方が色んな用途に使いやすそうです。ついでにこれらの作業をやる過程で、ACSのバインドメッシュに後からメッシュを追加してウェイトを手付けで設定する方法を学び、ビスチェを身体に含めました。
髪にも適用してみる
スカートとは別に髪にもClothを追加して試してみました。
お、惜しい。
身体との衝突の挙動や動きは良い感じなんですが、髪同士が雑に絡まっています。おそらく自己のメッシュとの衝突を考慮しないといけない気がするので、後日その線で調査してみます。
しかしこの、雑に髪をふわっとした状態を作る用途だけでも便利そうな気がしますね。SyFlexすごい。