2013年6月21日金曜日

雑記 : 平たく言えばエロ可愛い女の子を描きたい

とりあえず背景の仕事が終了
月に1点仕上げるハイペースでしたが
無事終了しました
ひゅーどんどん

当初、2点のはずだったのですが
ありがたい事に1点多くもらえました。
稼働したら報告できるかもです。


そして、そのまま次の仕事に。

今回は、キャラクターの
担当をさせてもらってます
(頼みこみました)

スケジュールがタイトですががが :p
ノリノリで作業中です・・・。

既にRIGは存在してますので、
モデリング > アニメーションのみですが

この次はRIGを含めて挑戦したいものです。

しかし、今更ながら絵力の
必要性を感じております。


平たく言えばエロ可愛い女の子を描きたいですネ! :p


いつも描いてて不細工&バランスが
取れなくて断念しちゃうんですが
もう一度挑戦してみようかと思いますヨ

2013年6月1日土曜日

PhotoshopScript : SwitchLayers v01 レイヤーの表示切り替え

相変わらず忙しいので、いつもながらチラ裏です スミマセン
いつかまともなサイトを作りたい物です・・・


今回もPhotoshopのスクリプトです


Photoshopで画像の差分制作を行います

エロではありません。
いや、むしろエロでつかったら俺にください!!!


・・・というわけで、差分のレイヤー表示を簡単に
するべく作ったスクリプトです


説明


命名法則により、表示、非表示を
一括で切り替えるスクリプトです

■Unhide
名前がマッチした場合、表示する

■Hide Group
名前がマッチした場合、非表示にする
※表示に入っている場合は無視されます

■その他
・その他のレイヤーの表示は変更しません
・レイヤーセットの名前が適合した場合、
 それ以下のレイヤーの表示は変更しません


SwitchLayers


//SwitchLayers
// 05 28 2013

//Global
var LEFT = 20
var TOP  = 20
var BUTTON_W = 100
var OFFSET_W = 125
var BUTTON_H = 25
var OFFSET_H = 40

//初期に設定されるグループネーム
var textChkGroupName = "p1,p2,p3,p4,p5,p6,p7,p8,p9";
var gUnHideObjectName = "homhom"
var gHideObjectNameGroup = ["hamham"]


//レイヤーに対するアクションA
function layerActionA( in_Layer ){
    //alert( "ActionA Match " + in_Layer.name )
    in_Layer.visible = true
    }


//レイヤーに対するアクションB
function layerActionB( in_Layer ){
    //alert( "ActionB GMatch " + in_Layer.name )    
    in_Layer.visible = false
    }


//名前検索(グループ)
function chkNameGroup( trget_Name )
{
    for ( var i = 0; i < gHideObjectNameGroup.length; i++)
    {
        if (trget_Name.match( gHideObjectNameGroup[i] ) ){
            return true
            }
        }
    return false
    }


//名前検索
function chkName( trget_Name ){
    //alert(gUnHideObjectName)
    if ( trget_Name.match( gUnHideObjectName ) ){
        return true
        }
    return false
    }


//再帰関数
function getAllLayer(parent){
    //alert(gUnHideObjectName)
 var ChildLayers= parent.layers;
 for (var i = 0; i < ChildLayers.length; i++){
  if (ChildLayers[i].typename == "LayerSet"){
   //レイヤーセットの場合の処理            
             //alert("LayerSet Name = " + ChildLayers[i].name)
             if( chkName( ChildLayers[i].name ) ){
                layerActionA( ChildLayers[i] )
                continue;
                }
                else{
                    //該当する名前がグループのみにあった場合
                    if ( chkNameGroup( ChildLayers[i].name) ){
                        layerActionB( ChildLayers[i] )
                        continue;
                        }
                    }
   //再帰処理
   getAllLayer(ChildLayers[i]);
  }else{
            //通常のレイヤーの場合の処理
           // alert("Layer    Name = " + ChildLayers[i].name)
            if( chkName( ChildLayers[i].name ) ){
                layerActionA( ChildLayers[i] )
                }else{
                    //該当する名前がグループのみにあった場合
                    if ( chkNameGroup( ChildLayers[i].name) ){
                        layerActionB( ChildLayers[i] )
                        }
                }
            }
 }
}


function switchLayers(uDlg){
    //alert("changeViewVis")
    
    //ダイアログからグローバル変数の設定
    gUnHideObjectName = uDlg.unhideName.text
    gHideObjectNameGroup =  uDlg.hideGroupName.text.split(",")
    
    //alert(gUnHideObjectName)
    //for ( var i = 0; i < gHideObjectNameGroup.length;i++)
    //    alert(gHideObjectNameGroup[i])
    
    
    //実作業
    var parent = activeDocument;//作業するドキュメントの参照
    getAllLayer(parent);
    
    
    refresh();
    }



function main(){
 
    app.bringToFront();
    //ドキュメントが開かれているかどうか判別
    if (app.documents.length ==0){
        alert("No Docment")
        return;
        //ドキュメントが開かれていない場合処理なし
    }
    var uDlg = new Window('dialog','switchLayers');
    uDlg.bounds = [200,300,580,420];   
    //uDlg.opacity = .9;

    
    uDlg.sText = uDlg.add("statictext",      [ 20, 10, 140, 10 + BUTTON_H], "UnHide (Unique)");
    uDlg.unhideName = uDlg.add("edittext",   [150, 10, 250, 10 + BUTTON_H], "p1");
    
    uDlg.sText = uDlg.add("statictext",      [ 20, 40, 140, 40 + BUTTON_H], "HideGroup(split(','))");
    uDlg.hideGroupName = uDlg.add("edittext",[150, 40, 360, 40 + BUTTON_H], textChkGroupName);
    
    uDlg.btnCancel = uDlg.add("button",      [150, 70, 250, 70 + BUTTON_H], "Close");
    uDlg.btn00 = uDlg.add("button",          [270, 70, 360, 70 + BUTTON_H], "Apply");

    uDlg.btnCancel.onClick = function () {
        //alert("キャンセルされました。");
        uDlg.close();
    }


    //ボタンを押されたときの設定
    uDlg.btn00.onClick = function ()
    {
        //switchLayers(uDlg);
        activeDocument.suspendHistory('switchLayers', 'switchLayers(uDlg)'); //margin(gap);
    }

    uDlg.show()
    
    //alert("finish")
    }

main()


展望


現在、表示レイヤーをtga保存する
ところまでいけました
次は一括出力です。
この手の作業はなるべく自動化しておきたい物ですヨ

2013年5月27日月曜日

PhotoshopScript : 現在のレイヤーをラスタライズする

最近Photoshopの使用率がうなぎのぼりです。

Photoshopのスクリプトは作りにくくてしょうがないので
あまり手を出していなかったんですが。

もうどうにも、めんどくさいので手をだして見ました。

PhotoshopCS6にはレイヤーをラスタライズなんて
機能があるんですが、うちのcs5さんにはありません。
でも、レイヤースタイルがんがん使うよね・・・

というわけで、作ってみた


なんかまだ上手く動かない場合がある・・・。

Rasterization


//現在のレイヤーをラスタライズする
//
// 05 23 2013


function CreateNewLayer( in_Name ){
    newLay = activeDocument.artLayers.add()
    newLay.name = in_Name
    return newLay
    }


function Rasterization(){
    
    //現在のレイヤーを取得
    var Lays = activeDocument.artLayers
    var ActiveLayer = activeDocument.activeLayer

    var tempName = ActiveLayer.name
    ActiveLayer.name = "homhom"
    
    //新しいレイヤーを作成
    newLayer = CreateNewLayer( tempName )
    
    //新しいレイヤーをアクティブレイヤーの下に移動
    newLayer.move(ActiveLayer,ElementPlacement.PLACEAFTER)
    
    //二つのレイヤーをマージ
   activeDocument.activeLayer = ActiveLayer
   activeDocument.activeLayer.merge()

}


function main(){
   Rasterization()
}

main()


参考サイト


ねこまたや

雪待夜

Adobe サイト
LayerIDの取得(あまり役に立たなかったけど)


その他 機能拡張

カスタムパネルの作成
  Adobe Configurator 3.1.1

そらかぜ工場

うたげ カラーピッカー
  Photosopでカラーサークルが使えるプラグイン

2013年5月20日月曜日

Game : Guilty Gear Xrd -SIGN-



Unrealであまりにも理想的な影を出していたのでチェック
いったいどういった調整だろう。

2013年5月16日木曜日

LevelDesign : Modular Level Design for Skyrim



スカイリムのレベルデザイン

スカイリム面白かったです


参考になります! やっぱりパズルよね〜。
でも、自動生成装置を作って利用してると思うのよね

2013年5月15日水曜日

nDo2 : dDo : Tutorial

下書きのまま放置してた


nDo2を購入したが使い方が解らん
マニュアル無いの???

と言う訳でTutorialを調査

nDo2



nDo2 workflow (+udk) UDK



写真からの作成
Texture Creation using nDo2



dDo



本家の基本チュートリアル

dDo - Feature Overview



2時間超え・・・。 Complete dDo Breakdown

dDoチュートリアル

dDo : dDo 5.0

去年の年末のクリスマスセールで、
ToolBagとdDoを購入したのですが、
このたびめでたく、ご結婚なされました(ぉ

ということを3D人さんで知りました・・・Oh
Marmoset Skyshop – Quixel’s dDo 5.0と統合!
Unity3Dを採用したリアルタイムイメージベースドラインティングツール!Unity向けシェーダーもリリース予定!


ちょっと意外でしたが、
dDoのビューアーに Marmoset の SkyShop(未発売) を導入というのが正しいみたい


フローとしては、チェーンソウの詳しい
チュートリアルがございました
2時間でございます orz




とりあえずdDo4.5(購入時)を立ち上げたら、
アップデートで5.0になりました。
費用はかからなかったみたい ホッ

で、MAYAでやっていたように
dDoのマテリアルのプリセットfbxを
SI2014で読み込んでみました・・・。
かなり寂しいビューだったので
Hight Quarty Viewに!

パラメータを変えるたびに
コンパイルし待たされる・・・

Hight Quarty View
まだまだ仕事では使えないですね orz


正直、SIのVIewは使えないので、
AutoDeskさんが開発されているFBXViewer待ちですね。


せめてきれいなViewなMAXに持って行こうと思ったけど
SIから転送は出来ませんでした。
MAXさんからの一方通行なのね(Maxのシーンをアップデートはできる) orz

気を取り直して、MAXから送ろうかと思ったけど
今度はエラーで転送できなかった orz

何か設定が悪いのかな。

というわけで、検証までいたりませんでした
こんどこれを試してみます > リンク



チュートリアル2時間は長いよ orz
いや、詳しくてうれしいれす ;p


後日
再起動したら、無事にMAX > SIで来ました。
ただ、ショートカットはMAXになるし、MAXに持っていけるのはICEだけという
本当にSIをプラグインとして利用してました

AutoDeskさん、マジSIをプラグインとして扱ってマス orz
いいソフトなんだけど、値段と、この扱いで人に薦められません・・・ヨ

ユーザー減る一方なんだろうなぁ orz