【アバター作成】ちびキャラ イラストを作ってみた。

皆さん、こんにちは。

今回は、ポーズを付けたちびキャラをイラストにしてみます。ピンタレストにも、沢山のちびキャライラストが出ていますが、私には、書けません💦。

しかしながら、こんな雰囲気が良いな!とか、こんな衣装を着せてみたいな!と言った好みは有るのです(すみません)。そういった希望を叶えるのが、img2imgと言う手法です。

VRoidstudioで作ったアバターにポーズを付けて、最後にイラストにして行きます。

うーさん
うーさん

AI生成になるので、最近、著作権の問題も出て来る様になりました。気軽な気持ちで、作った物が、良い感じに出来て、何かに利用したら大問題に、と言った事にならない様に、注意点もご案内して行きます。

少し、気を付けるだけで、無料で楽しく作る事が出来ますので、是非、やって見て下さい。

アバターを作る所までは、別記事にして要りますので、宜しければ、そちらをご覧下さい。

出来上がったちびキャラに効果を付けてみる

最初は、出来上がったちびキャラに効果を付けてみます。アニメなどでも、主人公は、ちびキャラでは無いのですが、エンディングなどで、効果を使ったちびキャラを使っているシーンを見た事が有ります。

ちびキャラだけでも、十分かわいいですが、効果を使いますと、背景とのバランスが変わって、良い感じになる場合が有ります。

一寸覚えておくだけで、色々なシーンに使えますので、良かったらご覧下さい。

ちびキャラアバターのに効果を付けるのは、画像編集アプリを使ってやってみます。

Photopea | Online Photo Editor
Photopea Online Photo Editor lets you edit photos, apply effects, filters, add text, crop or resize pictures. Do Online ...

画像編集アプリの老舗、photoshopと操作感が非常に近いアプリです。画像を、自分で細かく編集する事を勉強するとなるとphotoshopになるのかなと思いますが、有料のアプリです。

有料のサブスクには、少し早いかなと思いましたら、一先ず、photopea(無料です)で、練習してみるのは、良い事です。

景色を書く(photoshopでは、境界線と言います)

一番、最初の画像の様に、周りに太目の縁を付ける効果で、皆さんも、一度ぐらいは、見た事が有るのではないでしょうか。アプリによって、効果の名前が違いますので、それだけを、チョット覚えておいたら、作業自体は簡単です。

また、周りに付く太目の縁も、背景によってカラーを変える事が出来ますし、重ね掛けも可能です^^。

では、早速やって見ますね^^。

photopeaを立ち上げて、画像を開いたら、右側のレイヤーで右クリックします。別窓が開きますので、②ブレンドオプションを選んで下さい。更に別窓が開きますので、その中の③景色を描くを選択します。

今回の場合ですと、外側に20pxの白ふちを付けました。もし、見た目が分かり難いと感じたら、景色を描くの右端に有るをクリックして、追加でもう1枚作って、下側に少し大きめの黒(今回は2px大きくしました)を使いました。

うーさん
うーさん

ボタンの反応が悪い時、最初の別窓で、レイヤースタイルのラスタライズで、確定させて、もう1回、景色を描くで追加しても大丈夫です。

外枠の白線は、をクリックしますと、カラピッカーが出て、色の変更も可能ですので、背景に合わせて、目立つ色に変更する方法も有ります^^。

次は、ハッキリとした、色の付いた影を付けてみます。

このカラーのハッキリしたっ影が付く形も、見た事が有るのでは無いでしょうか^^。

ブレンドオプションのドロップシャドウを使っています。①ドロップシャドウを選択しましたら、②をクリックしますと、カラーピッカーが出ますので、ご希望の色に合わせて下さい。枠内のカラーバーに、少し分かり難いですが💦、白い横線が入っていまして、移動出来ます。この位置を変える事で、大きく色が変わります。

③は透明度の具合や角度、④角度の数字を大きくすると影の大きさが、大きくなります。

⑤サイズは0にしますと、影がハッキリしますので、効果が分かり易くなります。

今回は、よく見る2つの効果をやって見ました。AIイラストは、背景を透明にする事が出来ないので、加工後の画像にそのまま、効果を使う事が出来ませんが、AI加工サイトは、大体どこでも、背景を透明にするサブフィルターが有りますので、それを上手く使って、イラスト加工した画像に効果を追加する事も出来ます。

VRMアバターをAIイラストにしてみる

アバターをイラストにする良い点を、ご案内しますね。

ピンタレストのちびキャラ検索した画面。

seaart aiでちびキャラ検索した画面。

此方が、二つのサイトで検索したちびキャラ検索の画面です。沢山、並んでいますが、同じ様な感じが多いですね。VRoidstudioのちびキャラでしたら、背景は元より、サイトでの変換にかなり幅を持たせる事が出来ます。

では、早速やって見ます。

最初は、サクッとAIフィルターを使ってみました。公式が作っている淡彩と言うフィルターで、只、置くだけでこんな感じに仕上がります。

次は、アプリ内で創作してみます。

これがアプリ内で、AIが作ってくれたプロンプト(指示の言葉)です。

”花畑に立っている白いドレスを着た漫画の女の子, 花畑の少女の正面, 可愛い3Dアニメ少女のレンダリング, かわいい詳細なデジタルアート, ちび, かわいいデジタルアート, 全身:: 晴れ::, アニメ様式化された , 高精細な人物, !!全身 portrait!!, 花畑に立つ少女, 花畑の少女”

如何でしょうか?元画像の特長を維持しつつ、上手く、イラストにしてくれました。創作は、3回したので(モデルとLoRAの変更を行いました)合計で、9枚ほど作った内の1枚です。

ToraFurryMix - furry kawaii - SeaArt AIモデル
SeaArt AIでToraFurryMix - furry kawaiiモデルに出会おう。Stable Diffusionモデルを無料で体験し、ただテキストプロンプトを使って素晴らしいAI生成画像を得られます。

使用モデル

chigirl - SeaArt AIモデル
SeaArt AIでchigirlモデルに出会おう。Stable Diffusionモデルを無料で体験し、ただテキストプロンプトを使って素晴らしいAI生成画像を得られます。
niji - chibi_anime - SeaArt AIモデル
SeaArt AIでniji - chibi_animeモデルに出会おう。Stable Diffusionモデルを無料で体験し、ただテキストプロンプトを使って素晴らしいAI生成画像を得られます。

使用LoRA

では、今度は、全く同じモデルとLoRAを使いながら、img2imgではなく、Txt2img(プロンプトのみを使ってAIに作ってもらう)でやって見ました。

最初とは、大分イメージが違いますね。何度か、プロンプトを修正したりモデルとLoRAの変更したりしながら、枚数を重ねて行けば、近づいて来ると思いますが、短い言葉で伝える難しさを感じました。

これが、アバターからイラストを作る一番の長所だと思っています。

皆さんのちびキャライラスト作成の一助になれば、幸いです。

最後まで、お読み頂き有難うございました。

コメント

");const o=ie?ie.createHTML(e):e;if(nt===tt)try{t=(new W).parseFromString(o,at)}catch(e){}if(!t||!t.documentElement){t=le.createDocument(nt,"template",null);try{t.documentElement.innerHTML=ot?ae:o}catch(e){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),nt===tt?ue.call(t,Ie?"html":"body")[0]:Ie?t.documentElement:i},bt=function(e){return ce.call(e.ownerDocument||e,e,H.SHOW_ELEMENT|H.SHOW_COMMENT|H.SHOW_TEXT|H.SHOW_PROCESSING_INSTRUCTION|H.SHOW_CDATA_SECTION,null)},St=function(e){return e instanceof B&&("string"!=typeof e.nodeName||"string"!=typeof e.textContent||"function"!=typeof e.removeChild||!(e.attributes instanceof z)||"function"!=typeof e.removeAttribute||"function"!=typeof e.setAttribute||"string"!=typeof e.namespaceURI||"function"!=typeof e.insertBefore||"function"!=typeof e.hasChildNodes)},Rt=function(e){return"function"==typeof b&&e instanceof b},wt=function(e,t,n){pe[e]&&u(pe[e],(e=>{e.call(o,t,n,ut)}))},Ct=function(e){let t=null;if(wt("beforeSanitizeElements",e,null),St(e))return _t(e),!0;const n=st(e.nodeName);if(wt("uponSanitizeElement",e,{tagName:n,allowedTags:Ne}),e.hasChildNodes()&&!Rt(e.firstElementChild)&&_(/<[/\w]/g,e.innerHTML)&&_(/<[/\w]/g,e.textContent))return _t(e),!0;if(e.nodeType===J)return _t(e),!0;if(Me&&e.nodeType===Q&&_(/<[/\w]/g,e.data))return _t(e),!0;if(!Ne[n]||Ce[n]){if(!Ce[n]&&Dt(n)){if(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n))return!1;if(we.tagNameCheck instanceof Function&&we.tagNameCheck(n))return!1}if(Ye&&!qe[n]){const t=re(e)||e.parentNode,n=oe(e)||e.childNodes;if(n&&t){for(let o=n.length-1;o>=0;--o){const r=X(n[o],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,$(e))}}}return _t(e),!0}return e instanceof R&&!Et(e)?(_t(e),!0):"noscript"!==n&&"noembed"!==n&&"noframes"!==n||!_(/<\/no(script|embed|frames)/i,e.innerHTML)?(ke&&e.nodeType===Z&&(t=e.textContent,u([fe,de,he],(e=>{t=g(t,e," ")})),e.textContent!==t&&(p(o.removed,{element:e.cloneNode()}),e.textContent=t)),wt("afterSanitizeElements",e,null),!1):(_t(e),!0)},Lt=function(e,t,n){if(Be&&("id"===t||"name"===t)&&(n in r||n in mt))return!1;if(ve&&!Le[t]&&_(ge,t));else if(De&&_(Te,t));else if(!Se[t]||Le[t]){if(!(Dt(e)&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,e)||we.tagNameCheck instanceof Function&&we.tagNameCheck(e))&&(we.attributeNameCheck instanceof RegExp&&_(we.attributeNameCheck,t)||we.attributeNameCheck instanceof Function&&we.attributeNameCheck(t))||"is"===t&&we.allowCustomizedBuiltInElements&&(we.tagNameCheck instanceof RegExp&&_(we.tagNameCheck,n)||we.tagNameCheck instanceof Function&&we.tagNameCheck(n))))return!1}else if(Ze[t]);else if(_(Ae,g(n,Ee,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==T(n,"data:")||!Ke[e]){if(Oe&&!_(ye,g(n,Ee,"")));else if(n)return!1}return!0},Dt=function(e){return"annotation-xml"!==e&&h(e,_e)},vt=function(e){wt("beforeSanitizeAttributes",e,null);const{attributes:t}=e;if(!t)return;const n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Se};let r=t.length;for(;r--;){const i=t[r],{name:a,namespaceURI:l,value:c}=i,s=st(a);let p="value"===a?c:y(c);if(n.attrName=s,n.attrValue=p,n.keepAttr=!0,n.forceKeepAttr=void 0,wt("uponSanitizeAttribute",e,n),p=n.attrValue,n.forceKeepAttr)continue;if(At(a,e),!n.keepAttr)continue;if(!xe&&_(/\/>/i,p)){At(a,e);continue}if(Me&&_(/((--!?|])>)|<\/(style|title)/i,p)){At(a,e);continue}ke&&u([fe,de,he],(e=>{p=g(p,e," ")}));const f=st(e.nodeName);if(Lt(f,s,p)){if(!We||"id"!==s&&"name"!==s||(At(a,e),p=Ge+p),ie&&"object"==typeof G&&"function"==typeof G.getAttributeType)if(l);else switch(G.getAttributeType(f,s)){case"TrustedHTML":p=ie.createHTML(p);break;case"TrustedScriptURL":p=ie.createScriptURL(p)}try{l?e.setAttributeNS(l,a,p):e.setAttribute(a,p),St(e)?_t(e):m(o.removed)}catch(e){}}}wt("afterSanitizeAttributes",e,null)},Ot=function e(t){let n=null;const o=bt(t);for(wt("beforeSanitizeShadowDOM",t,null);n=o.nextNode();)wt("uponSanitizeShadowNode",n,null),Ct(n)||(n.content instanceof s&&e(n.content),vt(n));wt("afterSanitizeShadowDOM",t,null)};return o.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=null,r=null,i=null,l=null;if(ot=!e,ot&&(e="\x3c!--\x3e"),"string"!=typeof e&&!Rt(e)){if("function"!=typeof e.toString)throw A("toString is not a function");if("string"!=typeof(e=e.toString()))throw A("dirty is not a string, aborting")}if(!o.isSupported)return e;if(Ue||ft(t),o.removed=[],"string"==typeof e&&(je=!1),je){if(e.nodeName){const t=st(e.nodeName);if(!Ne[t]||Ce[t])throw A("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof b)n=Nt("\x3c!----\x3e"),r=n.ownerDocument.importNode(e,!0),r.nodeType===V&&"BODY"===r.nodeName||"HTML"===r.nodeName?n=r:n.appendChild(r);else{if(!Fe&&!ke&&!Ie&&-1===e.indexOf("<"))return ie&&ze?ie.createHTML(e):e;if(n=Nt(e),!n)return Fe?null:ze?ae:""}n&&Pe&&_t(n.firstChild);const c=bt(je?e:n);for(;i=c.nextNode();)Ct(i)||(i.content instanceof s&&Ot(i.content),vt(i));if(je)return e;if(Fe){if(He)for(l=se.call(n.ownerDocument);n.firstChild;)l.appendChild(n.firstChild);else l=n;return(Se.shadowroot||Se.shadowrootmode)&&(l=me.call(a,l,!0)),l}let m=Ie?n.outerHTML:n.innerHTML;return Ie&&Ne["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&_(q,n.ownerDocument.doctype.name)&&(m="\n"+m),ke&&u([fe,de,he],(e=>{m=g(m,e," ")})),ie&&ze?ie.createHTML(m):m},o.setConfig=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};ft(e),Ue=!0},o.clearConfig=function(){ut=null,Ue=!1},o.isValidAttribute=function(e,t,n){ut||ft({});const o=st(e),r=st(t);return Lt(o,r,n)},o.addHook=function(e,t){"function"==typeof t&&(pe[e]=pe[e]||[],p(pe[e],t))},o.removeHook=function(e){if(pe[e])return m(pe[e])},o.removeHooks=function(e){pe[e]&&(pe[e]=[])},o.removeAllHooks=function(){pe={}},o}();return oe}))
タイトルとURLをコピーしました