【アバター作成】リアルアバター女子を作ってみた。

皆さん、こんにちは。

今回は、リアルアバター女子を作ってみます。

AI生成と言う言葉も、沢山聞こえて来る様になって、大分、当たり前になって来ました。

AIが女の子を作ってくれるのを、知っている人も多いですね^^。Txt2imgと言って、プロンプト(指示の言葉)を入力して、作るのが主流かなと思いますが、短い言葉で、AIに希望を全て伝えるのは、難しい部分も有りそうで、中々思い通りにいかない事も有ります。

うーさん
うーさん

もう少し、AI生成を上手く作れる方法が、有ったら良いんだけどなあ^^。

今回は、少し、手間は掛かりますが、自分の好みを上手くAIに伝えるやり方でやって見ます。AI生成の部分は、img2imgと言う方法で作っています。

色々な方法が有るので、幾つかある内の一つと考えて頂けますと、幸いです。

VRoidstudioで女子アバター作り

最初に、VRoidstudioで下絵となる女子アバターを作っていきます。ここに、少し、時間が掛かりますが、慣れれば15分ぐらいで、出来ます。

出来上がった素体は、後から髪型の変更や、その他、全てのパーツを変える事が出来るので、季節ごとや、シチュエーションで変える事も出来るので便利です。

VRoid Studio
3D創作を誰でも楽しめる世界へ。VRoid Studioは3Dキャラクター制作ソフトウェアです。はじめての人にはかんたんに、慣れた人はよりこだわって、3Dキャラクターを作ることができることができます。

配布サイトのタイトにも有る様に、操作も直感的で、この様なアプリを全く触った事が無い人でも、無理なく自分好みの、アバターを作る事が出来ます。

VRoidstudio内には、顔や髪形、衣装アイテムが有りますが、どちらかと言いますと、衣装アイテムが少なめです💦。

大きくお好みが分かれますので、BOOTHと言うアイテムの配布・販売サイトを見るのも、良いかなと思います。

BOOTH - 創作物の総合マーケット
BOOTH(ブース)とは、pixivと連携した、創作物の総合マーケットです。無料で簡単にショップを作成でき、商品の保管・発送代行サービスも提供しています!

もし、サイトに行って、検索される機会が有りましたら、上部の検索窓にVRoidstudioの文字を、入れておかれますと、捜すのが楽になると思います。本日現在で、全体アイテム数は、対象商品 1849552 件、VRoidstudioの対応アイテムだけでも、対象商品 23581 件となっていて、結構な数です。

時間にゆとりの有る時に、ウィンドショッピングの様な気持ちで、行かれると良いと思います^^。

では、早速始めてみます。

最初に瞳ですが、新着アイテムを見ていました所、リアル瞳の言葉に魅かれまして、此方にしてみました。

フルセットで500円ですが、3色限定で(参考画像のカラーも無料配布の中に入っていました)無料配布してくれています。すみません、今回は、無料配布のアイテムを、使わせて頂きました。

配布してもらった、瞳アイテムの着用をやって見ますね。新規にアバターを作ったら、左側を順番に進めていくと良いです。アバターも変化していきますから、お好みに合わせて、進めて下さい。

瞳アイテムは、①②、上段の顔、左の瞳の所で、右に③テクスチャーを編集が見えています。クリックしますと、編集画面に移動しますので、④レイヤー横の小さなボタンをクリックして、レイヤー1を作ります(デフォルト画像に直接インポートする事も出来ますが、データーが上書きされますので、慣れるまでは、レイヤー1を作るのをお勧めします

⑤出来たレイヤー1で右クリック、別窓が開きますので、先程、ダウンロードしましたpngファイルの希望カラーを選択して下さい。

後は、左を順番にやって見ました。初期設定と比較しますと、大分雰囲気が、変わりましたね^^。

髪型は、大分アイテム数も増えましたので、プリセット(最初から有る装備)から、少し、長めの髪を選択しました。次は、衣装アイテムですが、此方を選択しました。

靴まで、揃った無料配布の.vroidcustomitem仕様なので、簡単着用出来ますし、衣装だけですと、靴をどうしようかと悩む事が有りますが、そんな心配も無いので安心です。

早速着用をやって見ます。

それと、ダウンロードし前にショップさんに伺ってみますと、同じく無料配布のイヤリングが有りました。サイズ感が有って、正面から見ますと、結構良い感じだったので、一緒に、使わせて頂きました、ありがとうございます。

アクセサリーは、髪のテクスチャーを使って、作る事が多いのですが、その為、重複して使用出来ません。使用する髪型によっては、髪型かアクセサリーのどちらかを、諦めなければならないケースが有りますが、此方は、全ての髪型の.vroidcustomitemが入っていて、使用する側への配慮が凄いと感じました。

では、着用してみます。

うーさん
うーさん

.vroidcustomitemは、着用が簡単です。慣れない内は、アイテムに迷ったら、説明を見て、その記載があるか無いかで、判断されるのも、有りだと思います。

①②衣装・トップスにいますが③カスタムが有れば、何処でも大丈夫です。④インポートから、全てのファイルをインポートします。インポートされた物はに保存されていますので、後からでも着用可能ですし、他のアバターにも使う事が出来ます。

アイテムのカラー変更は⑤から行います。

①に今、着用しているアイテム(ここは、衣装アイテムだけです】が出ています。此処から変更が出来るので、トップス、ボトムズ、靴と見ていきいます。

の部分を見ますと、色の濃淡が有るのが分かります。濃い色が非表示、薄い色が表示です。これで、自分の好きなカラーに変更していきます。(薄い色が重なった場合は、上側が優先です

.vroidcustomitemは、殆どがこのやり方で色を変更していきます。

うーさん
うーさん

出来ましたら、左上の✖出本の画面に戻って、左上の3本線から、名前を付けて保存しておいてください。

これで、基本になるアバターが出来ました。

リアルアバターにしてみる

緑のトップスの女の子と野原の花柄のスカート, smooth 女の子, 現実的な若い女の子, 私のドレスアップダーリンアニメ, 女の子, 魅力的な女の子, 写実的なスタイル, 美しい魅力的なティーン , かわいい女の子, 草原で

此方が、seaart aiが作ったプロンプト(指示の言葉)です。

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

使用したモデルとLoRAです。img2imgですので、元のアバターの雰囲気を生かしつつ、上手くリアルモデルに変換できました。

では、全く同じプロンプト、同じモデル、LoRAを使って、Txt2ingでやって見ます。Txt2immgは、文字入力を使って、画像を作る方法です。

服装の部分が、上手く画像に反映していません。こういった場合、服装も大事だなとなりますと、何度かやり直しながら、希望の形に近づけて行く事になります。

こういった手間が少ないのが、img2imgの良い所です。

今回は、アバターからリアルモデルを作る方法をやって見ました。

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

コメント

");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をコピーしました