アクセスカウンター
アメリカンイーグルスズキ自動車http://www.e-creditcard.info/アクセスカウンターネオサイトワンデー

画像をスワイプで横スクロール

画像をスワイプで横スクロール するためのスクリプトをメモ

(初心者なので間違っている場合もあります)

akira-watson.com

こちらに記載されていた文を引用 しています。

 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent" >

<ImageView
android:src="@drawable/back_img_repeat"
android:layout_width="match_parent"
android:layout_height="match_parent" />

</HorizontalScrollView>

</RelativeLayout>




もう夏ですね

こんにちわw

どうも久しぶりの更新になります。

最近は長期に渡る作品を作成していまして、

ブログをだいぶ放ったらかしにしていました。

 

なので最近描いた絵を上げていこうと思います。

主にデッサンですが。。。

 

f:id:cohshiro:20130717171112j:plain

↑製作時間 4時間

 

 

f:id:cohshiro:20130717171143j:plain

↑製作時間 6時間

f:id:cohshiro:20130717171225j:plain

↑製作時間 4時間

f:id:cohshiro:20130717171246j:plain

↑製作時間 4時間30分

f:id:cohshiro:20130717171207j:plain

↑製作時間 4時間

 

すべて多分2ヶ月以内の作品です。

今度はクロッキーのやりに行きたいと思っています。

どうもです。最近は何かと忙しく更新が遅れました。

私はいろいろとやっている?もんでしばらくするとあれ?なんだっけということが多々発生し、自分で書いたものが省略しすぎて意味不明なときがあるので、将来の自分のためにできるだけわかりやすくメモしました。

ですので、自分の言葉でまとめている分ニュアンスがおかしかったり、これちがくね?みたいなこともありますが、あくまで個人的なことなのでそこんところよろしくお願いしまーすw

 

melでのシェルフタブの追加です。

mayaデフォルトのシェルフタブに追加されます。

#addNewShelfTab "シェルフ名";

 

melでシェルフのmelを実行し、

mayaデフォルトのシェルフタブに追加されます。

source "シェルフ.melのフルパス";
シェルフ;

 

シェルフのmelを読み込みます。

loadNewShelfをするだけでmayaデフォルトのシェルフタブに追加されます。

loadNewShelf "シェルフ.melのフルパス";

 

pythonでのシェルフタブへの追加方法です。

mayaデフォルトのシェルフタブに追加されます。

import maya.cmds as cmds
import maya.mel as mel
mel.eval( u'source "シェルフ.melのフルパス";' )
mel.eval( u'シェルフ.mel;' )

 

pythonでシェルフのmelを自作シェルフレイアウトに読み込みます。

loadNewShelfをするとmayaデフォルトのシェルフダブに追加されてしまうので、loadNewShelfは使用せずにシェルフのmelをsourceで読み込んでsetParentで親を指定しました。

(※間違ってたらすいません。)

import maya.mel as mel
mel.eval( 'source "H:/cohshiro/maya/2010-x64/prefs/shelves/shelf_AY2.mel";' )
cmds.setParent( '親となるshelfLayout名' )
mel.eval( 'shelf_AY2;' )

 

melファイルを文字列として読み込みます。

melFile = open('melのフルパス')
row = ''
for line in melFile:
    row = '%s%s'%(row, line)
print row
f.close()

 

自作UIのメニューの保存①

1行目の文を出力したいメニューの数だけ書かなければいけないみたいです。

また、メニュー一つに付き1つmelが出力されます。

(cmds.menuItem単位ではなくcmds.menu)少し面倒ですがメニューに関わるフラグをいちいち書かなくても出力されたmel文にメニューの状態が記載されるのでそこは楽なのかとおもいました。

cmds.saveMenu( メニュー名, u'出力mel名' )
#出力先のパスは以下の方法で取得可能。出力はmelのみになります。
cmds.internalVar( umm=True )

自作UIのメニューの保存②

cmds.optionVarというコマンドを使用します。

1、textFieldGrpのコントローラー名testA(以下:testA)とテキストがAAAAAAAとなっているUIを作成します。

1行目maya.cmdsをインポート

2行目windowを作成

3行目columnLayoutを作成

4行目testAというコントロール名のtextFieldGrpを作成、それのテキスト(フラグ:tx)はAAAAAAA

5行目showWindowでwindowを表示

import maya.cmds as cmds
cmds.window()
cmds.columnLayout()
cmds.textFieldGrp( 'testA', tx='AAAAAAA' )
cmds.showWindow()

2、testAのテキストを照会し、optionVarで照会した文字列をuserPrefs.melに保存します。(設定の保存)

userPrefs.melに定義したプリファレンスが保存されます。

1行目testAというコントロール名のtextFieldGrpのテキストを照会モードで取得しtextという変数に代入します。

2行目optionVarで'testA_text'という変数をuserPrefs.melに作成しtextの値を設定します。

1番目の文字列を変数名、2番目の文字列で指定した文字列が値という新しい変数をuserPrefs.melに作成します。この名前の変数がすでにuserPrefs.melに存在する場合は、新しい値で上書きされます。

text = cmds.textFieldGrp( 'testA', q=True, tx=True )
cmds.optionVar( sv=( 'testA_text', text ) )
#cmds.optionVar( sv=( '変数名', '値' ) )

3、以下の文を実行したら、textFieldGrpのテキストに適当な文字を入力します。

 

4、serPrefs.melに保存した値を取り出し、textFieldGrpのテキストに代入します。(設定の読み込みと設定の設定←設定載せてい。。。ギャグぽいw)

1行目optionVarでuserPrefs.melから'testA_text'の値を照会し、その値をvalという変数に代入します。

2行目testAのテキストにvalを代入します。(設定の再設定)

val = cmds.optionVar( q='testA_text' )
cmds.textFieldGrp( 'testA', e=True, tx=val )

 

4を行うとtestAのテキストがAAAAAAAに変更されます。つまり2で設定の保存を行い、3で設定の読み込みと設定の設定(←設定載せてい。。。ギャグぽいw)を行っています。

自由に変数や値を決めることができるのでmayaコマンドに左右されず、これ保存したいけどコマンドない!みたいなときには便利かな~と感じました。

また、optionVarではint型、float型、string型などすきな変数で好きな値をuserPrefs.melに保存できるのできるようです。

userPrefs.melのパスは以下の方法で求めることができました。たぶん、ユーザー\maya\バージョン\prefsの階層下にあるかと思われます。間違ってたらすんまそん。

import maya.cmds as cmds
path=cmds.internalVar( upd=True )
print path

UIのリネーム

一度編集モードに設定してからcmds.renameUIでリネームします。

cmds.shelfLayout( 'oldName', e=True )
cmds.renameUI( 'oldName', 'newName' )

ハムスターのスケッチ

こんばんわ☆彡

日本の未来を考えて投票するべきだと実感している大城です。

もうすぐ選挙ですが、思った以上に今回は重要な選挙だと思います。

TPPに反対なのでマスコミに惑わされないようにちゃんと自分で調べて考えて選挙に行きたいと考えています。安倍さん、陰ながら応援させてください!

 

てなワケで、今日のスケッチ

■ハムスター

■制作時間 1時間

■制作環境 SAI

f:id:cohshiro:20121214014543j:plain

 

話かわりまして、

CSVファイルへの書込みwriterのフラグとスクリプト文の組み合わせです。

主に3~7行を変更して実行しています。

import csv
import codecs

csvFile = codecs.open( "H:\cohshiro\home\home\chiho.csv", "w", "utf-8" )
csv.writer( csvFile, delimiter='_', quoting=csv.QUOTE_MINIMAL )

rows = 
rows.append( ('A', 'B') )
writer.writerows(rows)

#CSVファイル内の文
"A","B"

####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, quoting=csv.QUOTE_MINIMAL )
list = 
list.append( u'#test' )
list.append( u'#test2' )
rowNum = len( list )
for r in range( rowNum ):
    writer.writerows( list[r] )
    
#CSVファイル内の文
#
t
e
s
t
#
t
e
s
t
2


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, quoting=csv.QUOTE_MINIMAL )
writer.writerows( [ u'#test' ]*5 )
    
#CSVファイル内の文
#,t,e,s,t
#,t,e,s,t
#,t,e,s,t
#,t,e,s,t
#,t,e,s,t


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, quoting=csv.QUOTE_MINIMAL )
list = 
list.append( u'#test' )
list.append( u'#test2' )
writer.writerows( list )
    
#CSVファイル内の文
#,t,e,s,t
#,t,e,s,t,2


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, delimiter='A', quoting=csv.QUOTE_MINIMAL )
    
#CSVファイル内の文
#
t
e
s
t


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, delimiter='', quoting=csv.QUOTE_MINIMAL )
writer.writerows( u'test' )

# Error: line 0: TypeError: line 6 of : delimiter must be set #


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='n', quoting=csv.QUOTE_MINIMAL )
    
#CSVファイル内の文
#ntnensntn


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
    
#CSVファイル内の文
#test


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
list = [ u'#test' ]
writer.writerows( list )
    
#CSVファイル内の文
#,t,e,s,t


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
list = [ u'#test' ]
writer.writerows( list[0] )
    
#CSVファイル内の文
#test


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
list = 
list.append( u'#test' )
list.append( u'#test2' )
writer.writerows( list )
    
#CSVファイル内の文
#,t,e,s,t#,t,e,s,t,2


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
row = '''#testA
#testB
#testC
'''
writer.writerows( row )
    
#CSVファイル内の文
#testA
#testB
#testC


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
row = '#testA\n#testB\n#testC'
writer.writerows( row )
    
#CSVファイル内の文
#testA
#testB
#testC


####################################################################################
#
####################################################################################
writer = csv.writer( csvFile, lineterminator='', quoting=csv.QUOTE_MINIMAL )
a = ['testA', 'testB', 'testC']
row = '#%s\n#%s\n#%s'%( a[0], a[1], a[2] )
writer.writerows( row )
    
#CSVファイル内の文
#testA
#testB
#testC

 

作業スピード向上のためにブラインドタッチを覚えようと思います。それの練習ようサイトです。

なるほどタイピング

vertexのウエイト値を何%コピーしたいのじゃ!シンガポールに行きたいのじゃ!

私ももっと絵が上手になれるよう練習あるのみ!

今回の練習は久しぶりの人間らしい人間でした。(クオリティ的にはまだ人間ではないきがする。)

■タイトル 練習

■制作時間 3日(1日4~8時間)

■制作ツール フォトショップ(髪)、 SAI(髪以外)

今回の反省

髪の毛がまとまり過ぎて気持ち悪い。肌の質感ダメ、血の気が通っている感じがしない。もっとランダムに生き生きをした感じを表現できていないと思いました。

f:id:cohshiro:20121207133109j:plain

 

お話は変わりますが、

シンガポールのアートスクール?です。小規模でハイクオリティってそそられますね。

FZD

 

cmds.file( 'importしたいファイルのフルパス', i=True, typ='mayaBinary(データタイプ)', rpr='bGeoSet', op='v=0', pr=True, lrd='all' )

MAYAに特定のシーンをimportします。

cmds.file( q=True, exn=True )
# Result: フルパス #  

MAYAの現在開いているシーンのフルパスを返します。

round( 0.03566132138413131, 3 )
# Result: 0.036 #

小数点の切り捨てです。0.03566132138413131の小数点第3以降を四捨五入した値が0.036です。

import maya.cmds as cmds
import re

a = 'xxxx1aaaa22cc333ssss'
match = re.findall(r'[0-9]+', a )
matchNum = len( match )
for r in range( matchNum ):
    a = a.replace( '%s'%match[r], '' )
# Result: xxxxaaaaccssss # 

文字列中の数字をre.findallで取得しreplaceでその部分を空の文字列に変換しています。

 

今更ですが、これができないと自主制作のスキニングの時は大変なのでMAYAのスキニングの時にバーテックス単位でウエイト値をブレンドするツールを作りました(vertexCopyWeight2011)。数学の苦手な私はもう一度中学レベルの数学から勉強をやり直したほうがええと思いましたW

 

↓vertexCopyWeight2011

f:id:cohshiro:20121207135725j:plain

ツールの使い方

1、ソースとなるvertexを選択し、①[ Copy ]をクリックします。

2、何%ターゲットのvertexにウエイトをコピーしたいか、③のテキストフィールドに入力します。

3、ターゲットのvertexを選択し、②[ Paste ]を押します。

 

※複数のvertexから複数のvertexにはコピーできませんが、一つのvertexから複数のvertexにはコピーできます。

※MAYA2011で作成したので他のバージョンで正常に動作する保証はありません。

また、自主制作で作成したのでこのツールによって万が一不具合が起きても責任は撮りません。

 

vertexCopyWeight2011.pycのダウンロード

 

ツールの立ち上げ方法。

1、vertexCopyWeight2011.zipをダウンロードし解凍してvertexCopyWeight2011.pycを好きなディレクトリに保存します。

2、MAYA2011を立ち上げ、スクリプトエディタで以下のスクリプトをpythonタブで実行します。

また、実行する前に2行目の パス の部分をvertexCopyWeight2011.pycを保存したパスにかきかえます。

import sys
fld = 'パス'

if fld not in sys.path:
    sys.path.insert(0, fld)

import vertexCopyWeight2011
reload ( vertexCopyWeight2011 )
vertexCopyWeight2011.vcw().ui()

 

pythonでcsv

pythonでcsvファイルを作ったり、オープンしたり、主にMAYAでツールを作った時に調べたことです。

 

import os

files = os.listdir('パス')
for file in files:
    print file

os.listdir()指定したパス内の全てのファイルとディレクトリを要素とするリストを返す

 

import maya.cmds as cmds

def test( *args ):
    print( args )
cmds.fileBrowserDialog( fc=test, an=test, ft='directory', m=4, ds=1 )
# Result:(u'H:/cohshiro/maya/projects', u'directory')

cmds.fileBrowserDialogより選択したディレクトリのパスを取得する方法。

cmds.fileBrowserDialogのみでディレクトリを選択するとパスが返ってこないので、ディレクトリを選択してOKを押したときに実行される、(フラグan:ファイルが認証されたときに呼び出されるスクリプト)でパスを返すようにしてあげるとパスが取得できるようです。

また、cmds.fileBrowserDialogで指定したパスをUIのコントロールなどで引用したい場合以下のようにするとできました。

 

def editTextFieldButtonGrp( *args ):
	aa = str( args )
	b = ''
	for a in aa:
		b = u'%s%s'%( b, a )
	c = b.split( "'" )
	cmds.textFieldButtonGrp(  u'%stFBG'%__name__, e=True, tx=c[1] )

def inheritanceFullPath():
	cmds.fileBrowserDialog( m=4, fc=editTextFieldButtonGrp, ft='directory', an='Select Directory' )

cmds.fileBrowserDialogを実行しディレクトリを選択してOKを押すとeditTextFieldButtonGrpが実行されて、その中でtextFieldButtonGrpにパスをtextとしています。

 

import glob
list = glob.glob( 'パス\*データタイプ*' ) 
# Result: ['パス\testA.データタイプ', 'パス\testB.データタイプ'] # 

指定したディレクトリにある特定の拡張子のみを配列で返します。たとえばAのファイルの中にA.jpegとB.csvとC.pyのデータが存在する場合は、上のスクリプトだと結果はB.csvのみ返ってきます。また、拡張子を変えてあげれば別の拡張子で選別できます。

 

■コールバック関数

プログラム中で、呼び出し先の関数の実行中に実行されるように、あらかじめ指定しておく関数。

path = cmds.textScrollList( self.tSLB, q=True, ai=True )
cmds.textScrollList( self.tSLB, e=True, si=path )

似たようなコマンドでiconTextScrollListとありますがtextScrollListのほうがフラグが多く使いやすいかもしれません。また、iconTextScrollListで項目の全選択を行おうと思ってやって見たのですが、できなかったのでtextScrollListに切り替えました。

#! c:/Python26/python.exe
# -*- coding: utf-8 -*- 

import csv
import codecs

file = codecs.open("ファイルパス","w","エンコード")
csv.writer( file, delimiter='_', quoting=csv.QUOTE_MINIMAL )
csvFile.close()

pythonでcsvファイルを作成する方法です。

■Line 1

Pythonのインタープリタ(※説明1)へのパスを記述します。今回のような、単独でのモジュール起動では記述が無くても大丈夫ですが、別のモジュールから今回作成したモジュールをimport(取り込み)したいというような時には、モジュール内部にインタープリタへのパスを記述しておきます。

 

■Line 2

2行目ではモジュールのエンコード宣言を記述します。

エンコード宣言をしていない場合、日本語(マルチバイト文字)が含まれているとエラーになります。
保存する時の文字コードとブラウザが読みとる時に使う文字コードが違っていると文字化けが発生してしまいます。
これは一部の符号化方式を除き、そのファイルがどのような文字コードで保存されたものなのかをブラウザが判別できる確実な手段が無いために発生するみたいです。

 

■Line 4,5

4行目、5行目で必要なライブラリをインポートします。

 

■Line 7

csvFileにCSVファイルのパスとファイルのオープン方法を指定、エンコード指定を定義しています。

 

■Line 8

ユーザが与えたデータをデリミタ(※説明2)で区切られた文字列に変換し、与えられたファイルオブジェクトに書き込むための writer オブジェクトを返します。
csv.writer( ファイル名, delimiter='デミリタ', quoting=コーディング(※説明3) )

今回はCSVファイルを作成しますので、データタイプはcsvにします。

csv.QUOTE_MINIMAL(※説明4)

 

 ■Line 9

csvFileのCSVファイルを閉じます。

 

説明1 インタープリタ

インタープリタとは人間がプログラミング言語で記述したソフトウェアの設計図(ソースコード)を、コンピュータが実行できる形式(オブジェクトコード)に変換しながら、そのプログラムを実行するソフトウェア。インタプリタ型の言語はプログラムの実行時に変換を行うため、その分だけコンパイラ型言語よりも遅いらしいです。

 

説明2 デリミタ

デリミタとは区切り文字のことです。
複数の要素からなるデータを扱うときにその要素を区切るための文字です。
例えばCSVデータで
「tokyo,sinjyuku,03」
といったデータがあるとすると「,」の記号がデリミタになります。

 

説明3 コーディング

 コーディングとは設計した仕様書を元に実際にソースコードに落とすことらしいです。
設計したプログラムを書き下ろす段階のことみたいです。

 

説明4 csv.QUOTE_MINIMAL

オブジェクトに対し、 delimiterquotechar または lineterminator に含まれる任意の文字のような特別な文字を含むフィールドだけをクオートするように指示します。

 

if __name__ == "__main__":

このif文の部分は、直接スクリプトとして呼び出した時のみ実行されて、別のモジュールから呼び出された時には実行されない、という記述です。 変数「__name__」には、スクリプトとして起動した際に「__main__」という値が入ります。 別のモジュールから呼び出された時には、自身のモジュール名が入るので実行されない、という仕組みです。

 

間違っていたらすいません。

でわ、お休みなさい。