お絵描きの話 ~ mstdn.maud.io Advent Calendar 2022

mstdn.maud.io Advent Calendar 2022 - Adventar
ついに5年目です## 参加条件mastodonサーバー「:don:」(mstdn.maud.io)にアカウントを持っている/いた、交流がある人## 記事の内容について特にジャンルの指定はありません。みんなの「すき」を自由に書き連ねて発信して...

5年目となりました、毎年恒例(?)の「A:don:vent Calendar」です。ジャンルの指定なしってことで、各々自由に書いてるアドベントカレンダーでございます。本日は5日目です。

昨日はGirAFFE Beerさんでしたね。

2022年作ったものまとめ、もしくはキーボードの話
まえがき これは mstdn.maud.io Advent Calendar 2022  4日目の記事です。 昨日は 8mitsu氏 でした。 GirAFFE Beerと申します。ジラフビールと読みます。 今年も末代アドカレ書いていきます。...

–==≡≡beer

…………。

ちなみに、去年はメキシコの話を書きました。

100円でメキシコに行ってきた話
「A:don:vent Calendar 2021」1日目です。今年も1日目に突撃しました。メキシコ is どこここ。なんだか砂っぽくて乾いてそうだなーってイメージがありますが、山やビーチ、ジャングルなど様々な風景を楽しませてくれるそうです...

さて、今年は(今年も?)末代絡みの話をするぞ~ってことで、お絵描きの話でもしようと思います。

今回は、末代こと:don:のマスコットキャラクターである藍川 茜あいかわ あかねちゃん……

 

 

ではなく

 

緑髪後輩狐ちゃん(仮)を描きます。

 

普段であれば、Ryzen 7 5800X3DとRTX2080を積んだデスクトップPCと、液晶ペンタブレットのCintiq Pro 13で描きますが、今回はFMV LOOXだけで仕上げていきます。

折角買ったんだから、ちゃんと使いたいよね。まぁ、ちょっと使いにくいんだけどさ。富士通さんペンの不具合はよ直して。

メイキングって程の内容ではなくて、とても雑ぅ~な解説と共に適当に描いていきます。

レッツお絵描き

まずはどういう感じに描いていくのかを考えます。

そうだね、なんかこう……。ほら、まぁその、あれよ。

……考えるのが面倒くさくなったので、3Dデッサン人形を使います。CLIP STUDIO PAINTのデッサン人形でも良いですが、イージーポーザーあたりが使いやすいので使っています。

Steam版とAndroid/iOS版は内容がちょっと違うので要注意。操作は一緒なので、Steam版を選ぶ前にスマホ版試してみると良いです。ちなみにSteam版のがコンテンツの制限が緩いです。何とは言わんけど。

IKハンドルなどは無いので、全関節を回転のみで調整することになります。でも人によってはその方が分かりやすいのかも。

で、適当にポーズ付けて保存してシュッと読み込みました。

ラフの作成

ちょっと待ったその前に(カラープロファイルの設定)

早速ラフから作成していきますが、その前にカラープロファイルのプレビュー設定をしておきます。FMV LOOXのような広色域ディスプレイで作業するときは、これを忘れると事故ります。

昔はsRGB相当のディスプレイばかりだったので、あまり気にすることはありませんでした。しかし、昨今はDisplay P3やAdobe RGBといった、「表現できる色の多いディスプレイ」が身近な存在となりました。スマートフォンやタブレットなんかは特にそうですね。

ICCプロファイルを正しく埋め込むだとか細かいことは置いておいて、ほとんどの環境では「画像は暗黙の了解でsRGBとして扱う」ということになっています。sRGB相当のディスプレイで作ってる限りは見え方が大きく変わる事はありませんが、広色域のディスプレイで見えたままに画像データを作成すると、sRGB相当に変換された際に色がくすんでしまいます。

上の画像は広色域ディスプレイでそのまま見た状態と、sRGBに変換してプレビューした状態の比較イメージです。(※あくまでも見え方のイメージ)sRGBに制限されると、赤っぽさが損なわれてくすんだ感じになっていますよね。

もしsRGB相当のディスプレイをお使いの場合でも、そのディスプレイに付属しているICCプロファイルを設定しておくのがお勧めです。ディスプレイメーカーの作成したICCプロファイルは、そのディスプレイ専用のパラメーターが書き込まれていますので、ディスプレイの「表示の癖」をOSに伝えておくことができます。その状態であれば、Microsoft フォトのようなICCプロファイル対応のアプリ上で、ほぼ正しくsRGBで表示されるようになります。ブラウザ上の画像とかもそうですね。

但し、動画とかゲームとか、そういうものは全然考慮されないことが多いため、あんまり変化がなかったりします。あとスマートフォンもメーカーやアプリによりけり「っぽい」ので、画像データを表示したときにsRGBを超える鮮やかな表示になっていることがあります。Androidならディスプレイ設定に「ナチュラル」などの色設定があれば恐らくそれがsRGB相当のもので、iOSだと今の製品はDisplay P3のディスプレイではありますが、TrueToneをオフにすることでsRGBに近い色温度に固定されます。iOSではsRGBのデータはsRGBで表示してくれているように見えるので、sRGBでの表示を確認するときはそうすると良いかもしれません。(軽く調べたけど正確なことはよく分かってない)

……めっちゃ脱線したね?えらそーな事を書いてますが、色彩のセンスがアレだといくら正確に近い色設定にしてもなんとやらです。うん、全く自信はない。

ラフをガシガシ描いていく

デッサン人形のレイヤーを一番下に配置し、レイヤー透明度を下げてレイヤーロックしておきます。

デッサン人形は参考程度に留めて、あとは気合いでなんとかします。

なんとかしました。

で、これらを全部レイヤーフォルダに突っ込んでまとめておき、ラフを参考にしつつ線画作業に移ります。ラフは「レイヤーカラー」を設定しておくと下書きとして使いやすいですね。レイヤーカラーを設定すると、レイヤー内の色が全部同じ色になります。初期設定で水色です。

ちゃんとした下書きはしないのかって?自分の中ではラフと下書きはあんま変わらないんだ。多分ラフに1時間ぐらい掛けたと思う……?疲れたので今日の作業はここまで。

線画の作成

翌日、線画の作成に取りかかりました。楽をするために、ベクターレイヤーを使います。

ベクターレイヤーでは、後から線の太さや形状を編集しても劣化が起こらないものです。通常のラスターレイヤーと使用感は大きく変わりませんが、細かな加工や調整など、不向きな部分もありますので適材適所で使っていきます。線画はベクター、色塗りはラスターかな?

線のはみ出しなどを気にせずガシガシと描き込んでいきます。ベクターレイヤーであれば、「ベクター用消しゴム」で線がはみ出した部分を簡単に消すことができます。

はみ出した部分をベクター用消しゴムでちょんちょんと触るだけで、線の交点まで一気に消えるので楽ちんです。え?楽ちん体液ブラシ?はは、知らんな。

瞳などの丸いものも、ベクターだと整えやすいです。ベクター線単純化で制御点を減らしておくのがコツでしょうか。線幅も修正が効くので好みの太さに調整します。

ちょっと個性が失われる感じがありますが、今回はベクターレイヤーで目を描いています。普段はラスターのままゴリゴリ書き殴っているのですがね。

そんなこんなで線画は一旦終了です。これぐらいだと大体30分掛からないぐらいですね。

引きで見たり、左右反転してみて、なーんかバランス変だな?ってところを調整しておきます。具体的には顔のバランスを弄りました。デジタルは福笑いできるのが強みですよね。

ラフのが綺麗に見えるやつ~。

着色する

えーと、瞳の色は何色だっけ?青色か。

下塗りをする

ちょっと休憩したので元気出てきました。まずは下塗りをします。

下塗りと言いつつ、なんとなく先に瞳を塗ってしまいましたが、モチベーションとバランス確認のために先に塗っちゃうのはありだと思います。瞳はベースカラーに瞳孔と影を入れて、ハイライトを入れるだけのシンプルスタイル。4~5レイヤーぐらい。

15分ぐらいで、下塗りを終えました。あと、胸ポケットを描き忘れていたので、しれっと追加しておきました。色を塗るとコレジャナイになるのはいつものこと。

髪にレイヤーマスクをかける

このままだと目と眉が隠れているので、髪関連のレイヤーを入れたレイヤーフォルダにマスクを設定して、エアブラシでフワッと消します。マスクであれば消しすぎても元に戻せますし、レイヤーフォルダ単位でマスクを掛ける場合は一括で調整可能なので、便利な物はどんどん活用していきましょう。

フワッと消しました。透過具合は、なんか違うな~と思いつつ微調整します。眉毛がどの程度見えるかどうかってところですね。消しゴムとかより、色を透明に設定したエアブラシを使う方が、ふんわりと消えるのでやりやすいと思います。

ついでに乗算あるいは焼き込み(リニア)で肌の影も入れました。影を入れるときはブラシツールで塗るよりも、「投げ縄塗りツール」が素早く広範囲を塗れて万能なので、勢いで囲んで塗っていきます。

なんか眠くなってきた……。

この工程で10分ぐらい。続きは後で~。

髪と服を塗る

おはようございます。朝の6時前です。

髪や服に影を入れていきます。こちらも投げ縄塗りツールで描いて、細かいところはブラシで調整する感じになります。

髪のハイライト(大)はレイヤーモードをスクリーンに設定してシュッと入れることが多いです。小さなハイライトはハイライト用の専用ブラシでサクッと済ませます。楽できるところは楽しちゃおう。

そうそう、しっぽが髪扱いになっているのは、色が同じだからです。レイヤーを細かく分けすぎると管理が大変なので一緒にしました。

(あっれ、いつもよりスカート丈短くね?)(膝上何センチだよ)(目の幅もうちょっと広くてもよかったな……)(色を塗ってから気がつくガバ)

頬紅と肌ハイライト

頬紅を塗ってから、頬にハイライトを入れます。ハイライトは、「ガウスぼかし」でぼかしておくとそれっぽい感じ。

エアブラシで肌にもハイライトを入れます。

ちょっとやり過ぎ感あるかも。

最後に顔の半分にそれとなく影を入れ、後ろ髪の影も暗くなるように調整しました。

ここまで30分ぐらい。サボって3日掛かってますが、作業時間はトータル2時間ちょっとですかね。

適当に背景を入れて完成

う~~~~~ん、なんかかなりミスった気がする……。しっぽも影を暗くした方が良かったかな。描き直すか(ぐるぐる目)

背景は「プリセットの背景素材」を突っ込んで終わりにしました。

イマドキだと、AIで吐き出した背景を加筆したりして使うってやり方もあると思いますが、全く使いこなせないのと呪文詠唱してる間に代用品が用意できるので、まだあんまり乗り気ではありません。

というか、AIを使うなら先に使っておかないと、AIイラスト側を自分の絵に合わせるのは至難の業なんですよね。更にそもそもの話をすると、背景とキャラを別で考えずに、同時に構図を考えておくべきでしょう。未熟なので全然やれてませんが。

背景込みのイラストは最近描きましたが、おたちょん依頼のときに苦労したのは言うまでもないです。もう少し頑張りましょう。

#パロディ 依頼イラスト - ぴけぴけのイラスト - pixiv
個人的に依頼を受けて描きました。

デジタルなので、描き終えてから色調補正とかする事もありますね。でも、それが余計だったりして事故る事もあるとかないとか。

というわけで、普段こんな感じでざっくりと描いてるよ~ってお話でした。

明日は500こだま伍長さんです。

追記:緑髪後輩狐ちゃん(仮)の本当の名前は?

なんと5年の歳月を経て名前が思い出されるという。月羽ちゃん(仮)だったようです。

");const o=Ee?Ee.createHTML(e):e;if(St===At)try{t=(new pe).parseFromString(o,wt)}catch(e){}if(!t||!t.documentElement){t=Oe.createDocument(St,"template",null);try{t.documentElement.innerHTML=Et?Ne:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),St===At?we.call(t,et?"html":"body")[0]:et?t.documentElement:i},Ht=function(e){return De.call(e.ownerDocument||e,e,k.SHOW_ELEMENT|k.SHOW_COMMENT|k.SHOW_TEXT|k.SHOW_PROCESSING_INSTRUCTION|k.SHOW_CDATA_SECTION,null)},Bt=function(e){e.normalize();const t=De.call(e.ownerDocument||e,e,k.SHOW_TEXT|k.SHOW_COMMENT|k.SHOW_CDATA_SECTION|k.SHOW_PROCESSING_INSTRUCTION,null);let n=t.nextNode();for(;n;){let e=n.data;p([Ce,xe,ke],t=>{e=E(e,t," ")}),n.data=e,n=t.nextNode()}},Gt=function(e){return e instanceof me&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof F)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},jt=function(e){if(!Se||"object"!=typeof e||null===e)return!1;try{return"number"==typeof Se(e)}catch(e){return!1}};function Wt(e,t,n){p(e,e=>{e.call(o,t,n,Ct)})}const Yt=function(e){let t=null;if(Wt(ve.beforeSanitizeElements,e,null),Gt(e))return zt(e),!0;const n=vt(e.nodeName);if(Wt(ve.uponSanitizeElement,e,{tagName:n,allowedTags:He}),Qe&&e.hasChildNodes()&&!jt(e.firstElementChild)&&C(/<[/\w!]/g,e.innerHTML)&&C(/<[/\w!]/g,e.textContent))return zt(e),!0;if(Qe&&e.namespaceURI===At&&"style"===n&&jt(e.firstElementChild))return zt(e),!0;if(e.nodeType===ce)return zt(e),!0;if(Qe&&e.nodeType===se&&C(/<[/\w]/g,e.data))return zt(e),!0;if(Ye[n]||!(qe.tagCheck instanceof Function&&qe.tagCheck(n))&&!He[n]){if(!Ye[n]&&$t(n)){if(We.tagNameCheck instanceof RegExp&&C(We.tagNameCheck,n))return!1;if(We.tagNameCheck instanceof Function&&We.tagNameCheck(n))return!1}if(st&&!mt[n]){const t=Ae(e)||e.parentNode,n=be(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=ge(n[o],!0);t.insertBefore(r,Te(e))}}}return zt(e),!0}return e instanceof m&&!function(e){let t=Ae(e);t&&t.tagName||(t={namespaceURI:St,tagName:"template"});const n=b(e.tagName),o=b(t.tagName);return!!Nt[e.namespaceURI]&&(e.namespaceURI===bt?t.namespaceURI===At?"svg"===n:t.namespaceURI===Tt?"svg"===n&&("annotation-xml"===o||Ot[o]):Boolean(Mt[n]):e.namespaceURI===Tt?t.namespaceURI===At?"math"===n:t.namespaceURI===bt?"math"===n&&Dt[o]:Boolean(Ft[n]):e.namespaceURI===At?!(t.namespaceURI===bt&&!Dt[o])&&!(t.namespaceURI===Tt&&!Ot[o])&&!Ft[n]&&(Rt[n]||!Mt[n]):!("application/xhtml+xml"!==wt||!Nt[e.namespaceURI]))}(e)?(zt(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!C(/<\/no(script|embed|frames)/i,e.innerHTML)?(Je&&e.nodeType===le&&(t=e.textContent,p([Ce,xe,ke],e=>{t=E(t,e," ")}),e.textContent!==t&&(g(o.removed,{element:e.cloneNode()}),e.textContent=t)),Wt(ve.afterSanitizeElements,e,null),!1):(zt(e),!0)},Xt=function(e,t,n){if(Xe[t])return!1;if(at&&("id"===t||"name"===t)&&(n in r||n in xt))return!1;const o=Ge[t]||qe.attributeCheck instanceof Function&&qe.attributeCheck(t,e);if(Ke&&!Xe[t]&&C(Le,t));else if($e&&C(Me,t));else if(!o||Xe[t]){if(!($t(e)&&(We.tagNameCheck instanceof RegExp&&C(We.tagNameCheck,e)||We.tagNameCheck instanceof Function&&We.tagNameCheck(e))&&(We.attributeNameCheck instanceof RegExp&&C(We.attributeNameCheck,t)||We.attributeNameCheck instanceof Function&&We.attributeNameCheck(t,e))||"is"===t&&We.allowCustomizedBuiltInElements&&(We.tagNameCheck instanceof RegExp&&C(We.tagNameCheck,n)||We.tagNameCheck instanceof Function&&We.tagNameCheck(n))))return!1}else if(gt[t]);else if(C(Ue,E(n,ze,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==N(n,"data:")||!dt[e]){if(Ve&&!C(Fe,E(n,ze,"")));else if(n)return!1}return!0},qt=M({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),$t=function(e){return!qt[b(e)]&&C(Pe,e)},Kt=function(e){Wt(ve.beforeSanitizeAttributes,e,null);const t=e.attributes;if(!t||Gt(e))return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ge,forceKeepAttr:void 0};let r=t.length;for(;r--;){const i=t[r],a=i.name,l=i.namespaceURI,c=i.value,s=vt(a),u=c;let f="value"===a?u:_(u);if(n.attrName=s,n.attrValue=f,n.keepAttr=!0,n.forceKeepAttr=void 0,Wt(ve.uponSanitizeAttribute,e,n),f=n.attrValue,!lt||"id"!==s&&"name"!==s||0===N(f,ct)||(Pt(a,e),f=ct+f),Qe&&C(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,f)){Pt(a,e);continue}if("attributename"===s&&S(f,"href")){Pt(a,e);continue}if(n.forceKeepAttr)continue;if(!n.keepAttr){Pt(a,e);continue}if(!Ze&&C(/\/>/i,f)){Pt(a,e);continue}Je&&p([Ce,xe,ke],e=>{f=E(f,e," ")});const m=vt(e.nodeName);if(Xt(m,s,f)){if(Ee&&"object"==typeof de&&"function"==typeof de.getAttributeType)if(l);else switch(de.getAttributeType(m,s)){case"TrustedHTML":f=Ee.createHTML(f);break;case"TrustedScriptURL":f=Ee.createScriptURL(f)}if(f!==u)try{l?e.setAttributeNS(l,a,f):e.setAttribute(a,f),Gt(e)?zt(e):h(o.removed)}catch(t){Pt(a,e)}}else Pt(a,e)}Wt(ve.afterSanitizeAttributes,e,null)},Vt=function(e){let t=null;const n=Ht(e);for(Wt(ve.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)Wt(ve.uponSanitizeShadowNode,t,null),Yt(t),Kt(t),t.content instanceof c&&Vt(t.content);Wt(ve.afterSanitizeShadowDOM,e,null)},Zt=function(e){if(e.nodeType===ae&&e.shadowRoot instanceof c){const t=e.shadowRoot;Zt(t),Vt(t)}const t=e.childNodes;if(!t)return;const n=[];p(t,e=>{g(n,e)});for(const e of n)Zt(e)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,a=null,l=null;if(Et=!e,Et&&(e="\x3c!--\x3e"),"string"!=typeof e&&!jt(e)&&"string"!=typeof(e=function(e){switch(typeof e){case"string":return e;case"number":return O(e);case"boolean":return D(e);case"bigint":return R?R(e):"0";case"symbol":return w?w(e):"Symbol()";case"undefined":default:return v(e);case"function":case"object":{if(null===e)return v(e);const t=e,n=P(t,"toString");if("function"==typeof n){const e=n(t);return"string"==typeof e?e:v(e)}return v(e)}}}(e)))throw x("dirty is not a string, aborting");if(!o.isSupported)return e;if(tt||Lt(t),o.removed=[],"string"==typeof e&&(ut=!1),ut){const t=e.nodeName;if("string"==typeof t){const e=vt(t);if(!He[e]||Ye[e])throw x("root node is forbidden and cannot be sanitized in-place")}Zt(e)}else if(jt(e))n=Ut("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===ae&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r),Zt(r);else{if(!ot&&!Je&&!et&&-1===e.indexOf("<"))return Ee&&it?Ee.createHTML(e):e;if(n=Ut(e),!n)return ot?null:it?Ne:""}n&&nt&&zt(n.firstChild);const s=Ht(ut?e:n);for(;a=s.nextNode();)Yt(a),Kt(a),a.content instanceof c&&Vt(a.content);if(ut)return Je&&Bt(e),e;if(ot){if(Je&&Bt(n),rt)for(l=Re.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Ge.shadowroot||Ge.shadowrootmode)&&(l=Ie.call(i,l,!0)),l}let u=et?n.outerHTML:n.innerHTML;return et&&He["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&C(re,n.ownerDocument.doctype.name)&&(u="\n"+u),Je&&p([Ce,xe,ke],e=>{u=E(u,e," ")}),Ee&&it?Ee.createHTML(u):u},o.setConfig=function(){Lt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),tt=!0},o.clearConfig=function(){Ct=null,tt=!1},o.isValidAttribute=function(e,t,n){Ct||Lt({});const o=vt(e),r=vt(t);return Xt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&g(ve[e],t)},o.removeHook=function(e,t){if(void 0!==t){const n=d(ve[e],t);return-1===n?void 0:y(ve[e],n,1)[0]}return h(ve[e])},o.removeHooks=function(e){ve[e]=[]},o.removeAllHooks=function(){ve={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},o}();return me})
タイトルとURLをコピーしました