画像をスワイプで横スクロール
画像をスワイプで横スクロール するためのスクリプトをメモ
(初心者なので間違っている場合もあります)
こちらに記載されていた文を引用 しています。
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
落書き
もう夏ですね
こんにちわw
どうも久しぶりの更新になります。
最近は長期に渡る作品を作成していまして、
ブログをだいぶ放ったらかしにしていました。
なので最近描いた絵を上げていこうと思います。
主にデッサンですが。。。
↑製作時間 4時間
↑製作時間 6時間
↑製作時間 4時間
↑製作時間 4時間30分
↑製作時間 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
話かわりまして、
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(髪以外)
今回の反省
髪の毛がまとまり過ぎて気持ち悪い。肌の質感ダメ、血の気が通っている感じがしない。もっとランダムに生き生きをした感じを表現できていないと思いました。
お話は変わりますが、
シンガポールのアートスクール?です。小規模でハイクオリティってそそられますね。
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
ツールの使い方
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
オブジェクトに対し、 delimiter 、 quotechar または lineterminator に含まれる任意の文字のような特別な文字を含むフィールドだけをクオートするように指示します。
if __name__ == "__main__":
このif文の部分は、直接スクリプトとして呼び出した時のみ実行されて、別のモジュールから呼び出された時には実行されない、という記述です。 変数「__name__」には、スクリプトとして起動した際に「__main__」という値が入ります。 別のモジュールから呼び出された時には、自身のモジュール名が入るので実行されない、という仕組みです。
間違っていたらすいません。
でわ、お休みなさい。