約 6,034,241 件
https://w.atwiki.jp/gendai4koma/pages/138.html
Drawing Musicは「現代4コマ」アカウントより2024年2月19日16 00に発表された、EPOCALCによる作品。また、EPOCALCによるサウンド・アート4コマは暫定的に本記事にまとめて掲載される。 概要 Drawing Music サウンド・アート4コマの数少ない実例であるが、楽譜に書き起こされているという点において他作品と峻別される。 それぞれ指示が記された一線譜の4セクション構成となっている。 ─── Ⅰ. 鉛筆を取り出し、枠を描く。[終止] Ⅱ. 枠を描く。[終止] Ⅲ. 枠を描く。[終止] Ⅳ. 枠を描き、鉛筆を置く。[終止] Fin. ─── EPOCALCのサウンド・アート4コマ作品 いずれも「Drawing Music」と同様、「現代4コマ」アカウントより発表されている、楽譜に書き起こされているといった共通点が見られる。 「無題」 「4コマのための合唱曲」 「Four Voices = Four Frames」
https://w.atwiki.jp/taskeru/pages/13.html
プロファイルの左側の部分に相当。 どういう条件の時にタスクを実行するかの指定。 英語できないからかなり適当。 ■Application■ [アプリが起動した時。 複数選択可能。] ■Time■ [○○:○○~○○:○○ 時間帯を指定したい時。1時間ごとに実行とかも可能。] ・From ⇒何時何分から。 ・Repeat ⇒~1時間ごとにみたいな時に使用。分指定の場合2分以上に指定しないとエラーが出る。 ・to ⇒何時何分まで。 ■Day■ [月日を指定したい時。曜日の指定も可能。] ■Location■ [場所を条件指定したい時。自宅に近づいたら、Wifi Onとかする時に使用。] ・Net ⇒3G or Wifi 回線を利用して現在地取得。(メリット:電池消費少ない。デメリット:現在地が大雑把) ・GPS ⇒GPS を利用して現在地取得。(メリット:現在地が正確。デメリット:電池消費多い。 ・GetFix ⇒現在時情報の修正? ■State■ [~の状態になった時と思う。一つプロファイルに二つまで指定可能。] ・Airplane Mode ⇒機内モードの時。 ・Battery Level ⇒バッテリーの% が From ~ To 間の時。 ・Bluetooth Connected ⇒ ・Calendar Entry ⇒ ・Cell Near ⇒指定した携帯基地局エリアに近づいた時。 ・Docked ⇒ ・Headset Plugged ⇒ ・Incoming Call ⇒電話がかかって来た時。家族・友人指定可能。 ・Keyboard Out ⇒ ・Light Level ⇒画面に受ける光の強さ が From ~ To の間の時。日中なら42以上? ・Media Button ⇒ ・Missed Call ⇒ ・Mobile Network ⇒ ・Orientation ⇒本体の傾きの指定したい時。仰向け/うつ伏せ etc ・Power ⇒ ・Proximity Sensor ⇒ ・Signal Strength ⇒ ・Unread Text ⇒ ・USB Plugged ⇒ ・Variable Value ⇒変数の値が条件に一致した時。 ・Wifi Connected ⇒Wifiに繋がった時。※SSIDやMACアドレスを指定る必要あり。 ・Wifi Near ⇒Wifi環境が近くにある時。※SSIDやMACアドレスを指定る必要あり。 ■Event■ [Stateに似てるが、恐らく自分で何かを動作させた時的なニュアンスかも。] ・Date/Time ⇒ ・Display ⇒ディスプレイ On/Off/Unlock した時。 ・File ⇒ ・Hardware ⇒ ・Misc ⇒ ・Phone ⇒電話関連の動作をした時 ・Power ⇒ ・System ⇒ ・UI ⇒ ・Variable ⇒ ・3rd Party ⇒対応した外部アプリが動作した時? ★★設定項目の随所で見受けられる、"Invert"というチェック項目があるが、"Not"的な意味合い。 例:OrientationでFaceUP(仰向け) を選択して、Invertにチェックを入れると、仰向け以外の時という意味になる。
https://w.atwiki.jp/android/pages/29.html
http //code.google.com/android/reference/android/content/Context.html サービスの起動とbind システムサービスの取得 IntentとIntentReceiverの制御 Permissionの管理 SQLiteDatabaseの作成とオープン ファイルの管理 リソースの取得 壁紙の取得と設定 単純な警告ダイアログの表示
https://w.atwiki.jp/artpromotion/pages/107.html
締切: 2009/11/23 タイプ: ギャラリー展覧会 展覧期間: 2009/12/5-20 開催場所: アメリカ ニューヨーク州 ニューヨーク 会場: climate/gallery (ニューヨーク) 後援: climate/gallery 賞: 10人の最優秀賞、カタログ、ニューヨークのアート専門家への提示 応募条件: ドローイング、初めての自己表現方法、アーティストによってかつてないほどに受け入れられ、 手のちからにのみよってダイレクトに描かれた絵・・・。 「The Time of Drawing」(ドローイングの時代)が今回の展覧会のテーマです。 料金: $35.00 /3 作品 リンク: ウェブサイト: http //climategallery.com/ 要綱: http //www.climategallery.com/pdf/climate_opencall_dec09_derzeitofdrawing ※応募の際には、必ず主催者ウェブサイトの内容、要綱を確認してください。 広告
https://w.atwiki.jp/kuin/pages/27.html
標準ライブラリ - Draw 説明 Drawは、文字や画像や3Dデータといったものを動かしたり、変形して表示させたりすることが出来るメソッドを多数持っています。ステージ全体に効果を与えるものと、クラスからインスタンスを生成してごにょごにょするものと2種類あるので、注意しよう。 所有メソッドLoadTex(path []char) @CTex説明 引数 戻り値 サンプルコード(Ver0.031) LoadFont(path []char) @CFont説明 引数 戻り値 サンプルコード(Ver0.031) LoadObj(path []char) @CObj説明 引数 戻り値 サンプルコード(Ver1.00) テンプレメソッド(ひきすー ひきすうかたー) もどりちー説明 引数 戻り値 サンプルコード(Ver0.031) CTex説明 補足 所有メソッドDraw(sx float,sy float,sw float,sh float,dx float,dy float,r float,g float,b float,a float) なし DrawScale(sx float,sy float,sw float,sh float,dx float,dy float,dw float,dh float,r float,g float,b float,a float) なし DrawRot(sx float,sy float,sw float,sh float,dx float,dy float,dw float,dh float,cx float,cy float,angle float,r float,g float,b float,a float) なし Width() float Height() float CFont説明 補足 所有メソッドMakeTex(size int,str []char,margin int) Draw@CTex ソースコードをUTF-8で保存しないと全角文字が文字化けします!(情報置いとくので整備おねがいします・・・) CObj説明 補足 所有メソッドDraw(tex CTex , normal CTex , group int , anim float) なし 所有メソッド LoadTex(path []char) @CTex 説明 指定したファイルパスに存在するテクスチャ(俗にいう画像ファイル)をロードします。この処理はそこそこ重たいので極力呼び出さないようにしましょう(基本は初回のみで)ちなみに解放処理はオートでやってくれます。メモリ解放忘れで闇だった旧GBerryとは違うのだ(しろめ) 引数 path []charファイルパスを指定します dbgresディレクトリからの相対パスにも対応しています。 指定することが出来るテクスチャデータは、KuinTexを使用して.kntexというファイルフォーマットに変換したもののみが使用出来ます。 戻り値 Draw@CTexDraw@CTex型のクラスインスタンスが返ります。 このLoadTexで得たクラスインスタンスを利用して、表示とか変形とかの処理を行います。 サンプルコード(Ver0.031) func Main(){Draw@CTexの項で嫌ほど使うので省略します}end func LoadFont(path []char) @CFont 説明 指定したファイルパスに存在するフォントデータ(.ttfとかとか)をロードします。この処理はそこそこ重たいので極力呼び出さないようにしましょう(基本は初回のみで)ちなみに解放処理はオートでやってくれます。メモリ解放忘れで闇だった旧GBerryとは違うのだ(しろめ) 引数 path []charファイルパスを指定します dbgresディレクトリからの相対パスにも対応しています。 指定することが出来るフォントデータは、ttcやttfでは動作を確認しました。(TrueTypeフォント系は少なくとも大丈夫っぽい。) 戻り値 Draw@CFontDraw@CFont型のクラスインスタンスが返ります。 このLoadFontで得たクラスインスタンスを利用して、色んな(≒任意の)文字列のテクスチャーデータを生成することができます。 サンプルコード(Ver0.031) func Main(){Draw@CFontの項で嫌ほど使うので省略します}end func LoadObj(path []char) @CObj 説明 指定したファイルパスに存在する3Dデータ(独自形式knobj)をロードします。この処理はそこそこ重たいので極力呼び出さないようにしましょう(基本は初回のみで)ちなみに解放処理はオートでやってくれます。メモリ解放忘れで闇だった旧GBerryとは違うのだ(しろめ) 引数 path []charファイルパスを指定します dbgresディレクトリからの相対パスにも対応しています。 指定することが出来る3Dデータは、KuinObjで変換したものでは動作を確認しました 戻り値 Draw@CObjDraw@CObj型のクラスインスタンスが返ります。 このLoadObjで得たクラスインスタンスを利用して、表示とか変形の処理を行います。 サンプルコード(Ver1.00) func Main(){Draw@CObjの項で嫌ほど使うので省略します}end func テンプレメソッド(ひきすー ひきすうかたー) もどりちー 説明 テンプレメソッドの説明をここにー 引数 ひきすー ひきすうかたーひきすーのせつめー 戻り値 もどりちかたーもどりちせつめいー サンプルコード(Ver0.031) func Main(){素敵なソースコードをここにー}end func CTex 説明 Kuinでテクスチャ(画像)を扱う為に使うクラスです。基本的には[#LoadTex]メソッドの戻り値でインスタンスを得るため、このクラスを自分でインスタンス生成することはないです[要出典]ちなみに、このクラスのコンストラクタを呼び出すと、16#00010006の実行時エラーを吐きます。 補足 なお、今回の説明で、何ぶん画像がないと説明しづらい部分があるので、特別にくいなちゃんを用意しました(256x256)。このくいなちゃんを「kuina.png」で保存し、KuinTexで「kuina.png.kntex」となったものを「kuina.kntex」にリネームし、以降のサンプルコード中に使用するものとする。 所有メソッド Draw(sx float,sy float,sw float,sh float,dx float,dy float,r float,g float,b float,a float) なし 説明 このインスタンスに指定されている.kntexの画像データを、指定した座標や色情報を元にKuin上に表示します。このメソッドはDrawScaleのラッパーです。つまりは、拡大率100%(拡大縮小無し)の、DrawScaleを内部で呼び出してるのと全く同じです。 引数sx float略称はおそらく「ソースx座標」の意味だと思います 画像ファイルの中の、表示したい左上の座標のx座標を指定します。 いつもは0.0だと思いますが、例えばbullet.pngに色んな弾をまとめて1枚の画像としてkntexに変換した時なんかに、左上の座標を切り替えるだけで、1つのインスタンスから何種類もの弾丸を取り出すことが出来ます。こうすることで扱いやすさ的にも処理速度的にもプラスに出来ます。 sy float略称はおそらく「ソースy座標」の意味だと思います sxのy座標バージョンです。 正直浮動小数点である理由はよく分かりません。整数のピクセル値以外を左上の座標に指定するメリットがある場面が想像出来ませんし、○○.0って打つ作業が面倒くさいのでint型にして欲しいです(消される) sw float略称はおそらく「ソースwidth(横幅)」の意味だと思います 画像ファイルの中の、表示したい横幅pxを指定します 解釈を変えれば、(右下のx座標 - 左上のx座標)の座標を指定するとも取れますね。 sh float略称はおそらく「ソースheight(縦幅)」の意味だと思います 画像ファイルの中の、表示したい縦幅pxを指定します 解釈を変えれば、(右下のy座標 - 左上のy座標)の座標を指定するとも取れますね。 どうでもいいけどsw,shに関してもint型に(ry dx float略称はおそらく「ディスプレイx座標」の意味だと思います Kuin上の表示したいx座標を指定します。 0.0と指定したら左端に画像が表示されるし、100.0と指定したら左側から100px右に移動した位置に表示されます。 dy float略称はおそらく「ディスプレイy座標」の意味だと思います Kuin上の表示したいy座標を指定します。 0.0と指定したら上端に画像が表示されるし、100.0と指定したら上側から100px下に移動した位置に表示されます。 r float画像の赤っぽさ成分を指定します。 基本的には1.0で。赤っぽさを弱めたい場合には0.0に近づけると赤っぽくなくなります。 g float画像の緑っぽさ成分を指定します。 基本的には1.0で。緑っぽさを弱めたい場合には0.0に近づけると緑っぽくなくなります。 b float画像の青っぽさ成分を指定します。 基本的には1.0で。青っぽさを弱めたい場合には0.0に近づけると青っぽくなくなります。 a float画像の不透明度成分を指定します。 基本的には1.0で。不透明度を弱めたい場合には0.0に近づけると\アッカリーン/します 戻り値なしないよっ サンプルコード(Ver0.031) func Main()var kuinaImage Draw@CTex Draw@LoadTex("kuina.kntex") {kntexファイルをLoadしてくる}while(true)do Kuin@Act() {kuina.kntexの画像ファイルから、座標(0,0)の位置から横幅256px、縦幅256pxを取り出しMain_dbg.exeウィンドウの左上から(100,100)の位置にRGBAの全てを100%出力で、画像を表示させる}do kuinaImage.Draw(0.0,0.0,256.0,256.0,100.0,100.0,1.0,1.0,1.0,1.0)end whileend func DrawScale(sx float,sy float,sw float,sh float,dx float,dy float,dw float,dh float,r float,g float,b float,a float) なし 説明 画像の表示だけならDrawで行えますが、画像の拡大縮小を考慮した上で表示したい場合は、こちらのDrawScaleを使用します拡大縮小ができるってだけで、基本的にはDrawと一緒なので、引数もDrawと異なる部分だけを説明しますなお、dwやdhに負数を入れることで、画像の左右反転や上下反転が可能になります。かなりエグいサンプルコードを用意しましたので、参考になりませんがそちらもどうぞ。 引数sx float sy float sw float sh float dx float dy float dw float略称はおそらく「ディスプレイwidth(横幅)」の意味だと思います Kuin上の表示したい横幅を指定します。 swと同じにしたら等倍で表示されるし、swの2倍の値を入れたら2倍横長になります 負数を入れたら左右反転します。そこそこ重要なテクニックです。 dh float略称はおそらく「ディスプレイheight(縦幅)」の意味だと思います Kuin上の表示したい縦幅を指定します。 shと同じにしたら等倍で表示されるし、shの2倍の値を入れたら2倍横長になります 負数を入れたら上下反転します。そこそこ重要なテクニックです。 r float g float b float a float 戻り値なしないよっ サンプルコード(Ver0.031) func Main()var kuinaImage Draw@CTex Draw@LoadTex("kuina.kntex") {kntexファイルをLoadしてくる} const FPS int 30 {Ver0.031では30fpsなので30という定数を入れる}var scale floatvar sin floatvar cos floatvar dy floatvar width floatvar height float while(true)do Kuin@Act() {kuina.kntexの画像ファイルから、座標(0,0)の位置から横幅256px、縦幅256pxを取り出しMain_dbg.exeウィンドウの左上から(200,100)の位置で、横幅128px、縦幅128pxを基準の大きさにして横幅の値を1秒周期で-128~128に変化させ、あたかもdx 100pxを中心に横方向回転してるかの如く表現し縦幅の値を1秒周期で96~160に変化して、パースを付けて立体感を表現するその際に、y座標にバイアスをかけて位置に違和感がないようにするRGBAの全てを100%出力で、画像を表示させる} do scale ((Kuin@Cnt()-1)%FPS*12) $ float {FPS(30)で割った余りを12倍してfloatにキャストすると0≦scale 360の値になる}do scale * Lib@Pi / 180.0 {それをπ/180倍することで、ラジアンの値に変換する}do sin Lib@Sin(scale) {それをsinの値にすると、 0⇒+1⇒ 0⇒-1⇒ 0の順番で値が変化していく}do cos Lib@Cos(scale) {それをcosの値にすると、+1⇒ 0⇒-1⇒ 0⇒+1の順番で値が変化していく}do width cos * 128.0 {cosを128倍すると、 +128⇒ 0⇒-128⇒ 0⇒+128の順番で値が変化していく}do height 128.0 + (sin * 32.0) {sinを32倍して128に足すと、+128⇒+160⇒+128⇒+96⇒+128の順番で値が変化していく}do dy -((sin * 32.0)/2.0) {heightの増分の半分の大きさの符号反転の値だけy方向に移動させることで、違和感を無くす}do kuinaImage.DrawScale(0.0,0.0,256.0,256.0,200.0,100.0+dy,width,height,1.0,1.0,1.0,1.0) {理解の助けになるように、widthだけ変化させたものを400,400に表示します}do kuinaImage.DrawScale(0.0,0.0,256.0,256.0,400.0,400.0,width,128.0,1.0,1.0,1.0,1.0) {理解の助けになるように、height(とdy)だけ変化させたものを50,400に表示します}do kuinaImage.DrawScale(0.0,0.0,256.0,256.0,50.0,400.0+dy,128.0,height,1.0,1.0,1.0,1.0)end whileend func DrawRot(sx float,sy float,sw float,sh float,dx float,dy float,dw float,dh float,cx float,cy float,angle float,r float,g float,b float,a float) なし 説明 画像を回転させる必要もある場合にはこのDrawRotを使用します。これも毎度のことながら、DrawScaleとほぼ同じなので、引数の説明は適宜省略していきます。 引数sx float sy float sw float sh float dx float dy float dw float dh float cx float略称はおそらく「サークル(円形)x座標」の意味だと思います。もしかしたら「センター(中心)x座標」かもしれない。 回転中心となるx座標を指定します。これはdxからの相対値です。 どういう回転をさせるかにもよるけど、大抵はdwの半分の値か、0.0だと思いますね。 cy float略称はおそらく「サークル(円形)y座標」の意味だと思います。もしかしたら「センター(中心)y座標」かもしれない。 回転中心となるy座標を指定します。これはdyからの相対値です。 どういう回転をさせるかにもよるけど、大抵はdhの半分の値か、0.0だと思いますね。 angle float回転する角度を指定します。 単位はラジアンです。degreeだと思ってドヤ顔で360.0とか打たないでください死んでしまいます r float g float b float a float 戻り値なしないよっ サンプルコード(Ver0.031) func Main()var kuinaImage Draw@CTex Draw@LoadTex("kuina.kntex") {kntexファイルをLoadしてくる} const FPS int 30 {Ver0.031では30fpsなので30という定数を入れる}var angle float while(true)do Kuin@Act() {kuina.kntexの画像ファイルから、座標(0,0)の位置から横幅256px、縦幅256pxを取り出しMain_dbg.exeウィンドウの左上から(100,100)の位置で、横幅128px、縦幅128pxに縮小してまた、回転中心を(64.0,64.0)として、1秒間に1回転するスピードでぐるぐる回すRGBAの全てを100%出力で、画像を表示させる} do angle ((Kuin@Cnt()-1)%FPS*12) $ float {FPS(30)で割った余りを12倍してfloatにキャストすると0.0≦angle 360.0の値になる}do angle * Lib@Pi / 180.0 {それをπ/180.0倍することで、ラジアンの値に変換する}do kuinaImage.DrawRot(0.0,0.0,256.0,256.0,100.0,100.0,128.0,128.0,64.0,64.0,angle,1.0,1.0,1.0,1.0)end whileend func Width() float 説明 読み込んだ.kntexファイルの横幅を得ます。メソッドなので、当然Getterです。 引数なしないよっ 戻り値float.kntexファイルの横幅(px)を返します。 サンプルコード(Ver0.031) func Main()var kuinaImage Draw@CTex Draw@LoadTex("kuina.kntex") {kntexファイルをLoadしてくる}do Dbg@Log("横幅は" ~ kuinaImage.Width().ToStr() ~ "pxです") {横幅は256pxです と表示される}end func Height() float 説明 読み込んだ.kntexファイルの縦幅を得ます。メソッドなので、当然Getterです。 引数なしないよっ 戻り値float.kntexファイルの縦幅(px)を返します。 サンプルコード(Ver0.031) func Main()var kuinaImage Draw@CTex Draw@LoadTex("kuina.kntex") {kntexファイルをLoadしてくる}do Dbg@Log("縦幅は" ~ kuinaImage.Height().ToStr() ~ "pxです") {縦幅は256pxです と表示される}end func CFont 説明 Kuinで文字を表示させる場合に便利なクラスとしてCFontがあります。CFontはttf(TrueTypeFont)のようなデータを利用して表示させるため、従来のKuin0.02xのように、自分で文字を画像化して。。。の作業を簡単化&動的化できるスグレモノです。是非マスターしましょう。 補足 なお、この説明の本筋とは逸れますが、PCにすでにインストールされているフォントのデータを取り出す方法を紹介します。(Win7のみです。それ以外のOSは各自ググってください) コントロールパネルを開きます 表示方法を「カテゴリ」にします デスクトップのカスタマイズを選択します ページが遷移されるので、項目の中から「フォント」を選択します ページが遷移され、フォント一覧が出てくるので、その中から使用したいフォントをコピーします コピーしたフォントデータをKuin側のdbgresディレクトリに突っ込めばバッチリです。 所有メソッド MakeTex(size int,str []char,margin int) Draw@CTex 説明 Draw@LoadFontメソッドで読み込んだCFontを文字の書かれたCTexに変換します。このメソッドの戻り値であるCTexデータは、.kntexからLoadTexした場合と同様に、Drawメソッド等で描画できます。PhotoShop等のソフトを使用している方なら、「フォントデータのラスタライズを行います」と説明すれば分かりやすいんじゃないでしょうか。このメソッドはそんなに頻繁に呼び出すべきではないのは確かなのですが、ノベルゲーム等、文字の自動スクロールなどを実装する場合は頻繁に呼び出さざるを得ない場面があり、悲しみを生みます。しかしLoadFontと明確に役割が分割されたので旧GBerryよりは高速化も図れていい着地点についたのではないでしょうか。 引数size intフォントサイズを指定します pxと必ずしも一致するとは限りません。というか大抵一致しません。あくまでフォントサイズなので注意。 str []charテクスチャー化するときの文字を指定します ここに与える文字を、数フレームごとに増やしていくと、ノベルゲームっぽい自動スクロールも作れます。詳しくはサンプルコードで。 margin int文字の間の余白を指定します。 きっちりつめて表示するなら0、だだっ広く表示するなら正の整数、重ねて表示させるなら負の整数を入れます。 ちなみに余談ですがこのメソッド単体では複数行に対応していません。 CFont.MakeFontメソッドで複数個のCTexを作成して、それのDrawする位置を調節することで、複数行には対応します。故に行間設定は存在しません。 戻り値Draw@CTex作成された文字のテクスチャが返ります。CTexの使い方は、Draw@CTexを参照されたし。 サンプルコード func Main()const FPS int 30 var fontData Draw@CFont Draw@LoadFont("meiryo.ttc")var fontMes []char "くいなちゃん6さい"var fontImage Draw@CTex fontData.MakeTex(24,fontMes,0) var fontMesStream []char ""var fontImageStream Draw@CTex fontData.MakeTex(24,fontMesStream,0)var showCnt int 0 {Width()やHeight()を使えば文字テクスチャーの長さがpxで取得できる}do Dbg@Log("横幅 " ~ fontImage.Width().ToStr() ~ ",縦幅 " ~ fontImage.Height().ToStr()) while(true)do Kuin@Act() {(50,50)の位置に、文字を表示する}do fontImage.Draw(0.0,0.0,fontImage.Width(),fontImage.Height(),50.0,50.0,1.0,1.0,1.0,1.0) {(50,100)の位置に、0.5秒ごとに1文字づつ表示させる}if(Kuin@Cnt()%(FPS/2) = 0)if(showCnt fontMes.Len())do fontMesStream ~ fontMes[showCnt].ToStr()do showCnt + 1elsedo fontMesStream ""do showCnt 0end ifdo fontImageStream fontData.MakeTex(24,fontMesStream,0) {テクスチャーの更新}end if{RGBAの部分を調節することで文字の色を変更することも可能例えば、16#21E9DF(水色っぽい感じの色)を表示させたかったら、rに 「(16#21 $ float) / (16#ff $ float)」の値をgに 「(16#e9 $ float) / (16#ff $ float)」の値をbに 「(16#df $ float) / 816#ff $ float)」の値をそれぞれ与えてやれば、水色っぽい色になる。}do fontImageStream.Draw(0.0,0.0,fontImageStream.Width(),fontImageStream.Height(),50.0,100.0,(16#21$float)/(16#ff$float),(16#e9$float)/(16#ff$float),(16#df$float)/(16#ff$float),1.0)end whileend func ソースコードをUTF-8で保存しないと全角文字が文字化けします!(情報置いとくので整備おねがいします・・・) CObj 説明 Kuinで3Dモデルを扱う為に使うクラスです。 補足 所有メソッド Draw(tex CTex , normal CTex , group int , anim float) なし 説明 引数tex CTex3Dモデルに使用するテクスチャの画像を指定します。LoadTexで作成したオブジェクトを指定してください。 nullでも動作しますが、3Dモデルの表面は真っ黒になります。 normal CTex3Dモデルの表面の凹凸を表す画像を指定します。LoadTexで作成したオブジェクトを指定してください。 使用しない場合はnullを指定してください group int描画する3Dモデル内のグループの番号(0から始まるインデックス)を指定してください。 anim floatアニメーションのキーフレームを指定する。0.0なら1番目のキー、1.0なら2番目のキーになり、0.5なら1番目と2番目のキーの中間の変形具合になります。 戻り値なしないよっ サンプルコード(Ver1.00) func Main()var model Draw@CObj Draw@LoadObj("sample.knobj") {knobjファイルをLoadしてくる}var tex Draw@CTex Draw@LoadTex("kuina.kntex") {kntexファイルをLoadしてくる} while()do Kuin@Act() {ここにはいい感じサンプルコードと説明が書かれる予定} do model.Draw(tex, null, 0, 0.0)end whileend func
https://w.atwiki.jp/masstexting/pages/10.html
Businesses use Mass Texting to keep customers interested in their products or services. Real-time promotions and notifications are great ways to engage the customer and show that your product or service is one to come back to.
https://w.atwiki.jp/tsukune/pages/218.html
描画プレーン 描画プレーンは、今作業している平面であり、シェイプを描いたり、スウィープパスを合わせたり、オブジェクトを見たりしている面です。デフォルトでは、描画プレーンはワーキングボックスのX軸とY軸のあいだになります。描画面は、まわりより線が明るくハイライトされています。 Note:描画プレーンの変更と移動についての情報は、"Changing Your Point of View"を参照してください。 #ref error :画像を取得できませんでした。しばらく時間を置いてから再度お試しください。 The default Drawing plane lies on the Working box's X and Y axes.
https://w.atwiki.jp/appwiki/pages/27.html
UIImageViewの拡大・縮小はプロパティ値を変更するなどで、比較的簡単に実現できますが、UIImageをリサイズしようとするとなかなか面倒な処理を行わなければなりません。 リサイズ(サイズ指定バージョン) [[UIImage]] *img_bf = [UIImage imageNamed @"hoge.png"]; UIImage *img_af; CGFloat width = 200; CGFloat height = 200; UIGraphicsBeginImageContext(CGSizeMake(width, height)); [img_bf drawInRect CGRectMake(0, 0, width, height)]; img_af = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); よくわかる?解説 細かく見ていくと結構簡単な処理です。 UIImage *img_bf; ← リサイズ前のUIImageを取得 UIImage *img_af; ← リサイズ後のUIImageを準備しておく CGFloat width = 200 ← リサイズ後の幅を指定 CGFloat height = 200; ← リサイズ後の高さを指定 UIGraphicsBeginImageContext(CGSizeMake(width, height)) ← リサイズする大きさのコンテキストを作成 [img_bf drawInRect CGRectMake(0, 0, width, height)]; ← その領域に描画してみる img_af = UIGraphicsGetImageFromCurrentImageContext(); ← 描画されたUIImageを取得 UIGraphicsEndImageContext() ← 作った画面外描画領域を破棄(後片付けみたいなもんです) リサイズ(割合指定バージョン) UIImage *img_bf = [UIImage imageNamed @"hoge.png"]; UIImage *img_af; float widthPer = 2.5; float heightPer = 2.5; CGSize resize = CGSizeMake(img_bf.size.width * widthPer, img_bf.size.height * heightPer); UIGraphicsBeginImageContext(resize); [img_bf drawInRect CGRectMake(0, 0, resize.width, resize.height)]; img_af = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); よくわかる?解説 サイズ指定バージョンとの違いは、リサイズ前のUIImageデータの大きさを見て、それに対して任意の倍率をかけ算していること CGSize resize = CGSizeMake(img_bf.size.width * widthPer, img_bf.size.height * heightPer); ← これです
https://w.atwiki.jp/ruphy/pages/36.html
CoreTextArcCocoa Rubyに置き換えながら内容を理解する def draw_rect(rect) return if (@font.nil? or @string.nil?) # コンテキスト初期化 context = NSGraphicsContext.current_context.graphics_port context.set_text_matrix CGAffineTransform Identity # 背景色と背景塗り NSColor.whitecolor.set rect.fill # 文字列と行検査 line = CTLine CreateWithAttributedString(@attributed_string) glyph_count = line.get_glyph_count return if glyph_count.zero? # グリフ弧情報 glyph_arc_info = [] prepare_glyph_arc_info(line, glyph_count, glyph_arc_info) # 原点をビューの左下から、ビューのセンター付近へ # コンテキストの状態を保存(あとでリストアする) context.save_g_state context.translate_CTM(rect.to_CGRect.get_mid_x, rect.to_CGRect.get_mid_y -@radius / 2.0) # 検査用の赤い弧を引っ張る context. begin_path. context_add_arc(0.0, 0.0, @radius, Math PI, 0.0, 1). set_RGB_stroke_color(1.0, 0.0, 0.0, 1.0). stroke_path context.rotate_CTM(Math PI_2)# コンテキストを反時計回りに90度回す text_position = CGPoint.new(0.0, @radius) # これから実際に描画していく。直前のグリフとそれぞれのグリフの角度の埋め合わせは計算済み # # 半円状のパスに沿ってグリフが広がります context.set_text_position(text_position.x, text_position.y) run_array = line.get_glyph_runs run_count = run_array.count # glyph_offset = 0 run_array.each_with_index{|run, run_index| run_glyph_count = run.count draw_substituted_glyphs_manualy = true run_font = run.get_attributes[kCTFontAttributeName] if @dims_substituted_glyphs !(@font == run_font) then draw_substituted_glyphs_manualy = true end run_glyph_index = 0 glyph_arc_info.each_with_index{|info, run_glyph_index| glyph_range = CFRange.new(idx, 1) context.rotate_CTM -info.angle glyph_width = info.width half_glyph_width = glyph_width / 2.0 position_for_this_glyph = CGPoint.new(text_position.x - half_glyph_width, text_position.y) text_position.x -= glyph_width text_matrix = run.get_text_matrix text_matrix.tx = position_for_this_glyph.x text_matrix.ty = position_for_this_glyph.y context.set_text_matrix text_matrix if (!draw_substituted_glyphs_manually) then run.draw(context, glyph_range) else cg_font = run_font.copy_graphics_font(nil) glyph = run.get_glyph(glyph_range) position = run.get_positions(glyph_range) context.set_font(cg_font) context.set_font_size(run_font.get_size) context.set_RGB_fill_color(0.25, 0.25, 0.25, 0.5) context.show_glyphs_at_positions(glyph, position, 1) end # グリフ外接枠の表示(青枠) if @shows_glyph_bounds.nonzero? then glyph_bounds = run.get_image_bounds(context, glyph_range) context.set_RGB_stroke_color(0.0, 0.0, 1.0, 1.0) context.stroke_rect(glyph_bounds) end # 行メトリクスによって定義された境界線の表示 if @show_line_metrics.nonzero? then [ascent, descent] = run.get_typographic_bounds(nil) line_metrics = CGRect.new(-half_glyph_width, position_for_this_glyph.y - descent, glyph_width, ascent+descent) context.set_RGB_stroke_color(0.0, 1.0, 0.0, 1.0) context.stroke_rect(line_metrics) end } glyph_offset += run_glyph_count } context.restore_g_state glyph_arc_info.free line.release end - (void)drawRect (NSRect)rect { // Don t draw if we don t have a font or string // フォントや文字列が無い場合は、即リターン if (self.font == NULL || self.string == NULL) return; // Initialize the text matrix to a known value // テキストマトリックスをKnownValueに対して初期化する CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; CGContextSetTextMatrix(context, CGAffineTransformIdentity); // Draw a white background // 背景を白で描画 [[NSColor whiteColor] set]; NSRectFill(rect); CTLineRef line = CTLineCreateWithAttributedString((CFAttributedStringRef)self.attributedString); assert(line != NULL); CFIndex glyphCount = CTLineGetGlyphCount(line); if (glyphCount == 0) { CFRelease(line); return; } GlyphArcInfo *glyphArcInfo = (GlyphArcInfo*)calloc(glyphCount, sizeof(GlyphArcInfo)); PrepareGlyphArcInfo(line, glyphCount, glyphArcInfo); // Move the origin from the lower left of the view nearer to its center. CGContextSaveGState(context); CGContextTranslateCTM(context, CGRectGetMidX(NSRectToCGRect(rect)), CGRectGetMidY(NSRectToCGRect(rect)) - self.radius / 2.0); // Stroke the arc in red for verification. CGContextBeginPath(context); CGContextAddArc(context, 0.0, 0.0, self.radius, M_PI, 0.0, 1); CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0); CGContextStrokePath(context); // Rotate the context 90 degrees counterclockwise. CGContextRotateCTM(context, M_PI_2); // Now for the actual drawing. The angle offset for each glyph relative to the previous glyph has already been calculated; with that information in hand, draw those glyphs overstruck and centered over one another, making sure to rotate the context after each glyph so the glyphs are spread along a semicircular path. CGPoint textPosition = CGPointMake(0.0, self.radius); CGContextSetTextPosition(context, textPosition.x-61.2, textPosition.y); CFArrayRef runArray = CTLineGetGlyphRuns(line); CFIndex runCount = CFArrayGetCount(runArray); CFIndex glyphOffset = 0; CFIndex runIndex = 0; for (; runIndex runCount; runIndex++) { CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex(runArray, runIndex); CFIndex runGlyphCount = CTRunGetGlyphCount(run); BooleandrawSubstitutedGlyphsManually = false; CTFontRef runFont = CFDictionaryGetValue(CTRunGetAttributes(run), kCTFontAttributeName); // Determine if we need to draw substituted glyphs manually. Do so if the runFont is not the same as the overall font. if (self.dimsSubstitutedGlyphs ![self.font isEqual (NSFont *)runFont]) { drawSubstitutedGlyphsManually = true; } CFIndex runGlyphIndex = 0; for (; runGlyphIndex runGlyphCount; runGlyphIndex++) { CFRange glyphRange = CFRangeMake(runGlyphIndex, 1); CGContextRotateCTM(context, -(glyphArcInfo[runGlyphIndex + glyphOffset].angle)); // Center this glyph by moving left by half its width. CGFloat glyphWidth = glyphArcInfo[runGlyphIndex + glyphOffset].width; CGFloat halfGlyphWidth = glyphWidth / 2.0; CGPoint positionForThisGlyph = CGPointMake(textPosition.x - halfGlyphWidth, textPosition.y); // Glyphs are positioned relative to the text position for the line, so offset text position leftwards by this glyph s width in preparation for the next glyph. textPosition.x -= glyphWidth; CGAffineTransform textMatrix = CTRunGetTextMatrix(run); textMatrix.tx = positionForThisGlyph.x; textMatrix.ty = positionForThisGlyph.y; CGContextSetTextMatrix(context, textMatrix); if (!drawSubstitutedGlyphsManually) { CTRunDraw(run, context, glyphRange); } else { // We need to draw the glyphs manually in this case because we are effectively applying a graphics operation by setting the context fill color. Normally we would use kCTForegroundColorAttributeName, but this does not apply as we don t know the ranges for the colors in advance, and we wanted demonstrate how to manually draw. CGFontRef cgFont = CTFontCopyGraphicsFont(runFont, NULL); CGGlyph glyph; CGPoint position; CTRunGetGlyphs(run, glyphRange, glyph); CTRunGetPositions(run, glyphRange, position); CGContextSetFont(context, cgFont); CGContextSetFontSize(context, CTFontGetSize(runFont)); CGContextSetRGBFillColor(context, 0.25, 0.25, 0.25, 0.5); CGContextShowGlyphsAtPositions(context, glyph, position, 1); CFRelease(cgFont); } // Draw the glyph bounds グリフ外接枠の表示(青) if ((self.showsGlyphBounds) != 0) { CGRect glyphBounds = CTRunGetImageBounds(run, context, glyphRange); CGContextSetRGBStrokeColor(context, 0.0, 0.0, 1.0, 1.0);// 青 CGContextStrokeRect(context, glyphBounds); } // Draw the bounding boxes defined by the line metrics() 行の if ((self.showsLineMetrics) != 0) { CGRect lineMetrics; CGFloat ascent, descent; CTRunGetTypographicBounds(run, glyphRange, ascent, descent, NULL); // The glyph is centered around the y-axis lineMetrics.origin.x = -halfGlyphWidth; lineMetrics.origin.y = positionForThisGlyph.y - descent; lineMetrics.size.width = glyphWidth; lineMetrics.size.height = ascent + descent; CGContextSetRGBStrokeColor(context, 0.0, 1.0, 0.0, 1.0);// 緑 CGContextStrokeRect(context, lineMetrics); } } glyphOffset += runGlyphCount; } CGContextRestoreGState(context); free(glyphArcInfo); CFRelease(line); }
https://w.atwiki.jp/proko_translation/pages/40.html
https //www.youtube.com/watch?time_continue=1 v=Ai0s4KHi_js 0 00pulling hugging fighting lifting arms do stuff. 引っ張ったり、抱きしめたり、戦ったり、持ち上げたり、腕はいろいろな動作をします。 0 09 You want the anatomy mastery to draw them freely in any position and from any angle. そういった動作を自由にあらゆる位置あらゆる視点で書けるようになるために 腕の解剖学に詳しくなりたいと思っていることでしょう。 0 14 Then your drawings will have more believable action and expressiveness. そうすればあなたの絵に真に迫った動作や表現力が加わることでしょう。 hey I m Stan Prokopenko ハァイ、私は Stan Prokopenkoです。 0 29this is my anatomy of the arms course. このビデオは私の腕の解剖学講座です。 0 34 In this first lesson i ll teach you the basic forms of the arm bones and how their joints work together for incredible mobility. この最初の課では、 腕の骨の基本的な形と、 それらの関節が驚くべき可動性で互いに動いていることを 説明します。 Skelly has three arm bones. Skelly君は腕の骨を三つ持っています。 The humerus radius and ulna 上腕骨、橈骨、尺骨です。 0 47 Wait, two forearm bones? yelp 二本の前腕骨?うーん。 0 54 The arm is designed to allow the hand to twist, 腕は、手がねじることができるように設計されていますが、 but it s not just a hand that twist. 単純に手がねじれるわけではありません。 1 00 The motion is spread out through the whole forearm when twisting the radius bone rolls across the ulna bone. ひねっている橈骨が尺骨を横切るときに、 腕全体を通して動作が伝わります。 The only humorous don t move much. 上腕骨だけが、そんなに動きません。 1 08 there s two words we should know for this arm twisted business, この腕の働きについて、知っておくべき二つの言葉があります。 1 15 supination and pronation. 回外と回内です。 1 21 Supination refers to the palm up position when the radius and ulna run parallel to each other. 回外は、 橈骨と尺骨が互いに平行に走っている時に、 手のひらを上に向ける位置を示しています。 when your arm is supinated you can hold a bowl of soup. あなたの腕が回外しているとき、スープのボウルを持つことができます。 1 26 When your arm is pronated you have a problem. あなたの腕が回内しているのならば、 ボウルを持つことに問題を抱えるはめになるでしょう。 1 37 During pronation the radius crosses over the ulna at an angle to bring the palms down. 回内するとき、手のひらを下にするために 橈骨と尺骨は交差しています。 With that in mind let s begin with the humerus. このことを念頭に置いて、 まずは上腕骨から始めましょう。 1 44 The humerus 上腕骨。 That s the bone of the upper arm. それは上腕の骨です。 1 49 It s about the same length as your ribcage that is two cranial units long. 胸郭とほぼ同じ長さであり、 また、脳頭蓋二つ分でもあります。 1 54 If a person is standing with their arms at rest, the elbow will line up with the bottom of the ribcage. もし人物が立った状態で腕を安静状態にすると、 ひじは胸郭の底と一致します。 Let s look at the simple forms. 単純な形に置き換えて考えてみましょう。 2 05 The humerus is like a croquet mallet plus the head of the humerus which is a sphere good on at the top on the side and slightly to the back. 上腕骨はクロケットのマレットのような形をしており、 加えて球体の上腕骨頭は This sphere pops into the glenoid cavity 2 17of the shoulder girdle to make a ball-and-socket joint which has the 2 22greatest range of motion of all the joint types. この球は肩帯の関節窩にはまり込んで、ボール-ソケット型の関節を 形成します。これはこの種の関節の中で最も広い可動域を持ちます。 2 26 At the bottom of the humerus is a wide triangular form. 上腕骨の底は、幅の広い三角形です。 The end of the triangle are called the epicondyles 三角形の先端は上顆と呼ばれ、 2 31 which is really just a fancy word for bump それは「こぶ」のしゃれた言い方です。 bump it! あっちいけ! 2 38 They are subcutaneous so they re easy to see at the back of the elbow それらは皮下にあるので、 肘の後ろに容易に見つけることができます。 Once you ve found both of them you 2 43can connect the dots to find the orientation of the arm. ひとたび上顆両方を見つけたら、 点をつなげて 腕の方向性を見つけることができます。 2 46 This is a super helpful trick when you re dealing with perspective of a 2 50 body part that likes to move around. これは、あちこち動き回りがちな体の部位の透視図法に 取り組むときに大変有用な技術です。 内側上顆2 55 The medial epicondyle is larger and more obvious which is why it s perfect very funny bone sneak attack. 内側上顆は、より大きく明瞭なので、 ファニーボーンに不意の一撃をくらわすのに最適です。 3 00 Not so funny, but it is humorous. 別にfunnyではありませんが、これはhumerousです。 3 07the lateral epicondyle is closer to the center of the arm. 外側上顆は腕の中心に近いです。 But we ll still create 3 12a dimple when the arm is straight or protrude slightly when the elbow is bent. protrude 【自動】 ~から突き出る、飛び出る、はみ出る 腕がまっすぐな状態ではくぼみができて、 肘を曲げた場合は少々突き出ます。 3 18See if you can find them on your arm. あなたの腕で見つけられるかどうかぜひ見てみましょう。 3 23 Between the epicondyles is a ball and a bow tie. 上顆二つの間はボールと蝶ネクタイのような形をしています。 The ball on the lateral side connects with the radius bone. 外側にあるボールには、橈骨が接続しています。 3 29 The bowtie fits into the ulna bone. 蝶ネクタイのような部分は尺骨がぴったりはまります。 the ulna 尺骨 So the ulna bone さて、尺骨の話です。 3 38 It s always going to be on the medial side of the elbow . 尺骨は常に肘の内側に存在しています。 3 43 At the wrist it will be either medial or lateral as the radius swings around it. 手首においては、橈骨が尺骨を軸に回ることによって、 尺骨は内側になったり外側になったりします。 But fear not there is an easy trick to 3 48it. それを見分けるいい方法があります。 3 49 The ulna will always be on the same side as the pinky. 尺骨は小指と同じ側に常に存在します。 3 54 In fact that bump you ve always had at your wrist. 手首に常に存在するこぶがそれです。 3 56That s the tip of the ulna. 尺骨についてのヒントです。 It s not a tumor tumor(腫瘍)じゃありませんよ。 3 59it s not a tumah no toma at all. 4 06 The ulna is thicker at the elbow and thinner at the wrist. 尺骨は、肘側では幅広く、手首側では細くなっています。 4 07 This is the opposite of the radius. これは橈骨とは反対ですね。 Together like a puzzle for an idiot. 簡単なパズルのようなものです。 4 15 Also the ulna has a slight S curve which is subcutaneous the whole way down on the back of the forearm. subcutaneous皮下の また尺骨は、わずかなS字カーブを描きながら、 肘から手首に至るまで前腕後面の皮下に確認することができます。 It will appear as a Ridge or fur on the surface. それは畝、もしくは○○として表面に現れます。 So 4 25 watch for that s-curve rhythm when you re tracking the muscles. 筋肉を追うとき、S字カーブのリズムを注意深く見てください。 4 28 Luckily for us there s another superficial part of the ulna 幸運なことに、尺骨が表面に現れる部分はもう一つあります。 The elbow 肘です。 4 33 Ulna actually means elbow. Ulnaとは実は「肘」という意味です。 The fancy technical name for that bump on the elbow is olecranon. 肘のでっぱりのしゃれた技術的な名称は、肘頭(olecranon)です。 4 44 this is a good landmark and it pairs with the epicondyles perfectly. これはとても良い目印であり、 また、完全に上顆と対になっています。 4 48 when the arm is straight the epicondyles of the humerus and the olecranon line up horizontally. 腕をまっすぐにしたとき、上腕骨の上顆と肘頭は 水平に一列に並びます。 4 54 When the arm bends the olecranon lowers and forms a triangle. 肘を曲げたとき、肘頭は下がり、三角形を形作ります。 Easy to see bony landmarks all working together. すべて一緒に動く、簡単に見ることのできる骨の目印です。 5 03life is good 人生は素晴らしい。 5 05 Remember the bowtie shaped bump on the front of the humerus. 上腕骨前面の蝶ネクタイ型のでっぱりを思い出してください。 5 10 The ulna grips that like a wrench 尺骨はそのでっぱりをレンチのようにつかみます。 The electron is the back of that wrench. 肘頭はそのレンチの後面です。 This makes a hinge joint. これは蝶番関節を形作ります。 5 17finally the wrist joint or rather the lack of a wrist joint. ついに、手首の関節、もしくは 手首関節における欠乏についてです。 5 23 There s a big gap between the ulna and wrist bones. 手首の骨と尺骨の間には大きな隙間があります。 5 28 This gap actually allows for more hand movement. この隙間は、より手を動きやすくします。 Try it 試してみましょう。 You can adduct your hand pinkie side about 50 degrees or more 手を小指側に、50度ぐらいには内転させられます。 5 36 But, the radiocarpal joint is much tighter. しかし、橈骨手根関節はより余裕がありません。 5 40 So, you can only abduct thumb side about 20 degrees. よって、親指側には20度程度しか外転できません。 the radius 橈骨 5 45 That s the guy that swings around the ulna to pronate or supinate the arm. それは腕を回内、もしくは回外させるために尺骨の周りをグルグル回っているヤツです。 5 50 It s always lateral at the elbow and always thumb side at the wrist. 肘において常に解剖学的外側であり、 手首において常に親指側にあります。 5 56 The radius is cylindrical for most of its length in its upper two-thirds or so. 橈骨はその大部分、上方2/3において円筒形です。 cylindrical 【形】 シリンダー[円筒]形[状]の 6 02 As it gets closer to the wrist it becomes boxy. 手首に近づくにつれて箱状になります。 6 07 That s why you ll typically see artists simplify the wrist to a box. それが、画家がよく手首を箱状に単純化して描く理由です。 It s thinner at the elbow and wider at the wrist 肘側では薄く、手首側では幅広くなります。 which I hope by now you figured out is the exact opposite over ulna s design. そろそろ皆さんにわかっててほしいのは、 橈骨のこういった形状は尺骨とちょうど逆になっているということです。 It also explains their joints. 関節についても説明しておきましょう。 6 23 The ulna is much wider at the elbow and is the primary elbow joint. 尺骨は肘でより幅広くなっており、 肘関節を主に構成しています。 6 29 The radius is much wider at the wrist and it s the primary wrist joint. 橈骨は手首において幅広くなっており、 手首関節を主に構成しています。 6 35 At the wrist the radius forms a large ellipsoid joint 手首において、橈骨は大きな楕円関節を形成しています。 ellipsoid joint 《解剖》楕円関節 Its concave shape holds the hand in place. その凹面形状は手を所定の位置に保持します。 6 41 In the next lesson we ll learn about the bones of the hand. 次のレッスンでは、手の骨について学んでいきましょう。 assignment 課題 6 46 Your assignment is to do a tracing over model photos and find the simple forms of the humerus radius and ulna. 貴方の課題は、モデルの写真をなぞり、 上腕骨、橈骨、尺骨の単純な形を見出すことです。 Basically you re like a human x-ray machine. X線撮影機になったつもりでやってみましょう。 6 57 To figure out where the bones should go, look for the clues from visible landmarks. 骨がどこを走っているかを見つけ出すために、 見えている目印からヒントを探しましょう。 So we have a premium section for students that want to learn more. それで、もっと学びたい生徒のために、有料の教材を用意しています。 7 07 The premium section has extended lessons with more information about the topic. 有料教材では、この話題についてのさらなる情報とともに、 より拡張版のレッスンを提供しています。 7 12 It also has additional drawing demonstrations. 追加のドローイング実演も含まれています。 7 15 If you do the assignments for each lesson, these demonstrations serve as the answers for the assignment. 貴方がそれぞれのレッスンの課題をやったのなら、 これらの実演は課題に対する回答として機能するでしょう。 So you can check your work こうしてあなたは自分の成果を確認できます。 7 24 there is an e-book version of each lesson that you can download as a PDF. PDFとしてダウンロードできる、 それぞれのレッスンの電子書籍版も存在します。 7 30 Print them out or keep them on your device. 印刷もできますし、デバイス上に保存しておくこともできます。 So you can quickly review the lessons . これで素早くレッスンの復習ができます。 7 35 And finally the premium section has 3D models that you can spin around, study, and draw from any angle. 最後に、有料教材には3Dモデルも含まれており、 回していろいろな方向から眺めたり、 研究したり、 様々な方向から描くことができます。 7 46 If you don t want your drawings to look like this, go to proko.com/anatomy. もしあなたがこんな絵を描きたくないと思っているなら、 proko.com/anatomyにアクセスしてください。 7 52 If you like this video don t be all selfish share with your friends. And if you want to be updated about new videos, click this button or go to procomp / subscribe このビデオを気に入ったのなら、独り占めしないであなたの友人にも 教えてあげてください。 また、新しいビデオの更新情報が知りたいのなら、 このボタンをクリックするか、proko.com/subscribeにアクセスして下さい。 the third which is why it s perfect for a 8 14funny bone sneak attack 8 16Oh bro do you have dark brown using up down 8 23well do you have . when your arms pronated 8 28you have a problem 8 34tana my legs are all it it splash all the way up into my shorts