MMD制作日記【1】

参考にしたサイト
MMDのはじめかた - VPVP wiki - アットウィキ


MMDをダウンロードする

以下のサイトからMMDをダウンロードする。
Vocaloid Promotion Video Project

myパソコンは64bitなので「1.4 MikuMikuDance(64bitOS Ver)」をダウンロードしました。
f:id:meryl_2525:20190703214818p:plain:w350


MMDを起動する

ファイルをダウンロードしたらZIPファイルをすべて解凍する。
f:id:meryl_2525:20190703215526p:plain:w250
MikuMikuDance」のアプリケーションをダブルクリックで起動。
f:id:meryl_2525:20190703215805p:plain:w350


何か動かしてみる

[ファイル]-[開く]から[サンプル(きしめん).ppm]を選択
f:id:meryl_2525:20190703220357p:plain:w300

ファイルを開くとミクさんが出てきました!
f:id:meryl_2525:20190703220558p:plain:w350

再生を押すとミクさんが踊りだします。
もう一度再生を押すと、元の状態に戻ります。
f:id:meryl_2525:20190703221003p:plain:w200


映像を出力する

トップメニューにある[ファイル]-[AVIファイルに出力]を選びます。
f:id:meryl_2525:20190703221640p:plain

適当なファイルの場所を選び、ファイル名を付けます。
f:id:meryl_2525:20190703222002p:plain

「フレームレート」を「30」、
「録画フレーム」は「0~733」
「ビデオ圧縮コーデック」を「未圧縮」
で「OK」を選択
f:id:meryl_2525:20190703222016p:plain

書き出し中は専用のウィンドウが開きます。
f:id:meryl_2525:20190703222346p:plain

出力が終わると元の画面に戻ります。

GIMP2で自分が分からなかった操作

 GIMP2を使っていく中で自分が検索した操作方法をまとめます。
おそらく、随時追加していきます。

文字の移動

「テキスト」ツール f:id:meryl_2525:20190621193952p:plain:w20 (Tキー)を使っても文字を入力
f:id:meryl_2525:20190621194539p:plain

「移動」ツール(Mキー)にし、左クリックして、ドラック

背景が動いてしまう

shiftキーを押しながらドラック

C#プログラミングメソッドが分からない件【C#学習メモ】

メソッドやらが分からないので「C#の絵本」81ページに記載してある例文を見て何とか理解しようと頑張ってみます。

using System;

class Cat
{
    string name;
    string place;
    int age;

    public void setData(string n, string p, int a)
    {
        name = n;
        place = p;
        age = a;

    }
    public void print()
    {
        Console.WriteLine(place + ":" + name + " " + age + "歳");
    }
    public void print(string p, int a)
    {
        place = p;
        Console.WriteLine(place + ":猫は" + a + "匹です");
    }
    public void print(string variety)
    {
        Console.WriteLine(place + ":" +name+"  "+ age + "歳"+ variety);
    }
}

class Pet
{
    static void Main()
    {

        Cat cat1 = new Cat();
        Cat cat2 = new Cat();
        Cat cat3 = new Cat();

        cat1.setData("ロビン", "うち", 10);
        cat2.setData("ちび", "となり", 14);

        cat1.print("雑種");
        cat1.print();
        cat1.print("うら",0);

    }
}

(株)アンク(2017)『C#の絵本 [C#の絵本第2版] C#が楽しくなる新しい9つの扉』発行所(81ページ)

3行目クラスCatの定義
5行目string型の文字列nameの宣言
6行目string型の文字列placeの宣言
7行目int型の整数ageの宣言

9行目setDataという名前のメソッドの定義。戻り値の型はvoidn,pというstring型の文字列と、aというint型の変数が、引数*1の値を受け取りますよー。
11行目文字列nameにはnを代入します!
12行目文字列placeにはpを代入します!
13行目変数ageにはaを代入します!

16行目printという名前の文字を表示するメソッドの定義。このメソッドには引数も戻り値もないです。

17行目printという名前の文字を表示するメソッドの定義。string型のpint型のaという変数が、引数の値を受け取りますよー。

18行目printという名前の文字を表示するメソッドの定義。string型のvarietyという文字列が、引数を受け取りますよー。

31行目クラスPetの定義。

33行目Mainという名前の静的なメソッドの定義*2

36行目Catクラスのcat1というオブジェクトを作ります。*3
37行目Catクラスのcat2というオブジェクトを作ります。
38行目Catクラスのcat2というオブジェクトを作ります。

40行目Catクラスのcat1というオブジェクトの9行目のsetDataというフィールドに()内の引数を渡している。
41行目cat2というオブジェクトの9行目のsetDataというフィールドに()内の引数を渡している。

43行目36行目で作ったCatクラスのcat1というオブジェクトのprintというフィールドに()内の引数を渡す。対応するフィールドは25行目のpublic void print(string variety)です。variety="雑種"になります。
このとき、40行目のcat1の引数がsetDataに渡されています。それから{}内の処理を行います。
44行目対応するフィールドは16行目のpublic void print()です。
45行目対応するフィールドは20行目のpublic void print(string p, int a)です。p="うら"a=0になります。

以下は実行結果です。
f:id:meryl_2525:20190620205825p:plain



ちなみに、22行目を消したら、実行結果は以下のようになりました。(エラーは出ませんでした。)
f:id:meryl_2525:20190620210839p:plain



こうやって1行ずつ意味を調べていくと、
なんとなーくわかってきた気がしました。

*1:処理の材料のこと

*2:Mainメソッドはstaticらしい

*3:オブジェクトの作り方

(クラス名) (オブジェクト名) =new (クラス名)();

【7】クラス【C#学習メモ】

クラスの概念

クラスはデータの処理を一つにまとめたものです。データのことをフィールド、処理のことをメソッドといいます。フィールドやメソッドのことをクラスのメンバといいます。

オブジェクト

クラス自体に値は格納できません。値を格納できる変数のようなものをオブジェクトといいます。

オブジェクトは以下のように作ります。

(クラス名) (オブジェクト名)=new (クラス名) ();

フィールド

フィールドとはクラス内の変数です。
フィールドの追加は次のように行います。

class(クラス名)
  {
  (型) (フィールド名) = (初期値) ;
  }

異なるオブジェクトのフィールドの参照や代入は以下のように行います。

class(クラス名)
  {
  (オブジェクト名).(フィールド名) =(初期値) ;
  (変数)=(型) (フィールド名)(初期値) ;
  }

using System;

class Wdata
{
    public int month;
    public int day;
    public string sky;
}

class Weather
{
    static void Main()
    {
        Wdata today = new Wdata();
        today.month = 10;
        today.day = 9;
        today.sky = "晴れ";

        Console.WriteLine(today.month + "月" + today.day + "日" + today.sky);

    }
}

5~7行目でフィールドの定義(型の前にpublicを記述する!)
14行目Wadaクラスのオブジェクトtodayを作った。
15行目オブジェクトtodayのフィールドmonthに10の値を代入
16行目オブジェクトtodayのフィールドdayに9の値を代入
17行目オブジェクトtodayのフィールドskyに「晴れ」を代入

以下は実行結果です。
f:id:meryl_2525:20190620170315p:plain

はい、なんだかもうわからなくなってきました(汗)

メソッドの定義

メソッドとは、各オブジェクトが持っている自身に対する操作。

・・・?


処理の材料となる値を引数、結果のことを戻り値といいます。

二つの整数値の和を得るメソッド

add()

戻り値がないメソッド

disp()

引数がなく戻り値があるメソッド

half()

引数も値もないメソッド

print()

スコープ

ローカル変数

メソッドの中で宣言した変数のことをローカル変数といいます。

【6】制御文【C#学習メモ】

if文

if文とは

ifは「もし~だったら」という意味です。条件によって処理を行うときに使います。

if(条件式)
{
(処理1)
}
else
{
(処理2)
}

条件式に当てはまる場合「処理1」を実行します。当てはまらない場合「処理2」を実行します。

連続して使用するif文です。

if(条件式)
{
(処理1)
}
else if(条件式2)
{
(処理2)
}
  else if(条件式3)
{
(処理3)
} else
{
(処理4)
}

この場合どの条件にも当てはまらない場合「処理4」が実行されます。

using System;

 class mosi
 {
    static void Main(string[] args)
    {
        int a = 9999;
        Console.Write(a+"は");
        if(0<=a&&a<10){
            Console.WriteLine("1桁の数です");
        }
        else if (10 <= a && a < 100)
        {
            Console.WriteLine("2桁の数です");
        }
        else if (100 <= a && a < 1000)
        {
            Console.WriteLine("3桁の数です");
        }
        else
        {
            Console.WriteLine("4桁以上の数です");
        }
    }
        
 }

実行結果は以下の通りです。
f:id:meryl_2525:20190620104743p:plain

for文

for文は繰り返し処理を効率よく行うための制御文です。

for((初期化の式);(条件式);(更新式))

using System;

 class mosi
 {
    static void Main(string[] args)
    {
        int a, b;

        for (a = 1; a <= 3; a++)
        {
            for (b = 1; b <= 3; b++)
            {
                Console.WriteLine(a+"×"+b+"="+(a*b));
            }
            Console.WriteLine();
        }

    }
 }

f:id:meryl_2525:20190620115045p:plain
実行結果です。

foeach文

foreach文は配列などのデータの集まりを1回ずつ呼び出して処理します。

foreach( (整数型) (要素を受ける変数名) in (配列名) );

using System;

 class mosi
 {
    static void Main(string[] args)
    {
        string [] Days= {"Mon","Tue","Wen","Thu","Fri","Sat","Sun" };

        foreach (string a in Days)
            Console.WriteLine(a);

     

    }
 }

実行結果です。
f:id:meryl_2525:20190620120040p:plain
配列が終わるまで実行します。

while文

while文は条件が成り立っている間処理を繰り返します。

while(条件式)

do~while文

do~while文は条件が下にくるため必ず1回は処理が実行されます。

do
{
(処理)
}while(条件式)


using System;

 class mosi
 {
    static void Main(string[] args)
    {
        int sum=0,sum2=0, i=0,j=0;

        do
        {
            ++i;
            sum += i;
        } while (i < 5);
        Console.WriteLine("1から5までの和は"+sum+"です");


        while (j < 5)
        {
            ++j;
            sum2 +=j;
        }
        Console.WriteLine("1から5までの和は" + sum2 + "です");



    }
 }

実行結果です。
f:id:meryl_2525:20190620121953p:plain

繰り返しの中断

break文

繰り返しの途中でbreak文が来ると一番近いブロックの終わりにジャンプします。

while(条件)
{
  (処理1)
break;
  (処理2)
}

ここでは「処理1」を実行し、「break」繰り返しを中断し、while文から抜け出します。「処理1」を1度実行したら、終わりです。

continue文

繰り返しの途中でcontinue文があるとその会の処理を中断し次の回の最初から実行します。

while(条件)
{
  (処理1)
continue;
  (処理2)
}

ここでは、「処理1」を実行し、「continue」でwhile文の最初に戻ります。条件に当てはまる間はし「処理1」を実行し、「処理2」は実行されません。


using System;


namespace renshu6
{
    class Program
    {
        static void Main()
        {
            int a=0,b = 0;

            while (a < 10)
            {
                a++;
                if (a % 3 == 0)
                {
                    break;
                }
                Console.WriteLine(a);
            }

            Console.WriteLine();

            while (b < 10)
            {
                b++;
                if (b % 3 == 0)
                {
                    continue;
                }
                Console.WriteLine(b);
            }
        }
    }
}

実行結果です。
f:id:meryl_2525:20190620130010p:plain
break文では3の倍数が来たら処理を中断しているのに対し、continue文では3の倍数のみ表示されていません。

swich文

swich文は複数のcaseという選択肢の中から条件に当てはまるものを選び、その処理を実行します。

swich(式)
{
  case(値1):
   (処理1)
   break;
  case(値2):
   (処理2)
   break;
  case(値3):
   (処理3)
   break;
  default:
   (処理1)
   break;
}

using System;


namespace renshu6
{
    class Program
    {
        static void Main()
        {
            int a;

            for (a=3;a<7;a++)
            {
                Console.Write(a+"÷3="+a/3);

                switch (a % 3 )
                {
                    case 0:
                        Console.WriteLine(" 余りは0です。");
                        break;
                    case 1:
                        Console.WriteLine(" 余りは1です。");
                        break;
                    default:
                        Console.WriteLine(" 余りは2です。");
                        break;
                }
            }
        }
    }
}

実行結果です。
f:id:meryl_2525:20190620134625p:plain

【5】演算子【C#学習メモ】

計算で使う演算子

数の計算で使う演算子

演算子 意味
+ 足す
- 引く
× 掛ける
/ ÷
% 余り
= 代入

using System;


    class keisan
    {
       static void Main(string[] args)
        {
        Console.WriteLine("1+2=" + (1 + 2));
        Console.WriteLine("3×2=" + (3 * 2));
        Console.WriteLine("5÷3の余りは" + (5 % 3));
        }
    }
 

実行結果は以下の通りです。
f:id:meryl_2525:20190619125124p:plain

代入演算子

演算子 意味
+= 足して代入
-= 引いて代入
 *= 掛けて代入
/= 割って代入
%= 余りを代入

using System;


    class keisan
    {
       static void Main(string[] args)
        {
        int a = 100;

        Console.WriteLine(a+"-25=" + (a-=25));
        Console.WriteLine(a+"÷3=" + (a/=3));
        Console.WriteLine(a+"÷5の余りは" + (5 % 3));
        }
    }

以下は実行結果です。f:id:meryl_2525:20190619130251p:plain

インクリメント演算子とデクリメント演算子

演算子 名前 意味
++ インクリメント演算子 変数の値を1増やす
-- デクリメント演算子 変数の値を1減らす

++aa++は違う値になります。
++aはaに1を足した後代入する。
a++は値を代入した後aに1を足す。

using System;


    class keisan
    {
       static void Main(string[] args)
       {
        int a = 100;
        Console.WriteLine("aの値は" + a +"です");
        a++;
        Console.WriteLine("aの値は" + a + "です");

        int b = 10;
        int c = 10;
        Console.WriteLine("bの値は" + ++b + "です");
        Console.WriteLine("cの値は" + c++ + "です");

       }
    }

以下は実行結果です。
f:id:meryl_2525:20190619134645p:plain

比較演算子

比較演算子とは値を比較して、条件式を作り、結果によって処理を変えることができます。
条件が成立した場合は「真(true)」、成立しない場合を「(false)」といいます。

演算子 意味
== 等しい
より小さい
> より大きい
<= 以上
>= 以下
!= 等しくない

using System;


    class hikaku
    {
       static void Main(string[] args)
       {
        int a = 10;
        int b = 20;

        Console.WriteLine("a=" + a + "  b=" + b );
        Console.WriteLine("a<b・・・" +(a<b));
        Console.WriteLine("a==b・・・ " + (a == b));
        Console.WriteLine("a!=b・・・ " + (a != b));


        }
    }

以下は実行結果です。
f:id:meryl_2525:20190619212006p:plain

倫理演算子

倫理型

bool型は「true」または「false」の値を持つ変数の型です。
以下のように定義します。

bool (整数型) = ( (条件式) );

条件演算子

「?:」条件式の値により、2つのうちのどちらかを選択します。

(整数型) = ( 条件式 ) ? ( 条件がtrueの時 ) : ( 条件がfalseの時 );

例(今回の例がへたくそすぎて自分でも何を書いているんだかよくわからなかったです汗)

using System;


    class enzan
    {
       static void Main(string[] args)
       {
        int a = 10;
        int b = 20;
        Console.WriteLine("a=" + a + "  b=" + b );

        bool c;
        c = false;
        string seikai= "正解", huseikai = "不正解";
        string d =c? seikai : huseikai;
        Console.WriteLine(d) ;

        string answer = a!=b ? seikai : huseikai;
        Console.WriteLine("a!=b・・・ " + answer);


        }
    }

12行目boolcの定義
13行目cfalseを代入
15行目string型のdcが「true」ならばseikai、「false」ならばhuseikaiを代入(「false」のためhuseikaiが代入される)。

18行目stringanswerにa!=bが「true」ならばseikai、「false」ならばhuseikaiを代入。
以下が実行結果です
f:id:meryl_2525:20190619222440p:plain

論理演算子

複数の条件を組み合わせてより複雑な条件を表すときに使います。

演算子 意味
&& かつ
|| または
! ~ではない

using System;


    class enzan
    {
       static void Main(string[] args)
       {
        int a = 10;
        int b = 20;
        Console.WriteLine("a=" + a + "  b=" + b );

        bool c;
        Console.WriteLine((a == 10) && ( b == 10)) ;
        Console.WriteLine((a == 10) || (b == 10));


        }
    }

13行目aとbのどちらともが10である。
14行目aまたはbのどちらかが10である。gt
以下が実行結果です。
f:id:meryl_2525:20190619222536p:plain

【4】コレクション【C#学習メモ】

List

コレクションとは、複数のデータを扱うためのクラスの集まりです。


List<(整数型)> a =new List<整数型>();
a.Add(要素);

2行目で要素を動的に1つ追加し、そこに「要素」を設定します。

使用例

using System;
using System.Collections.Generic;

 class ColorClass
{
    static void Main(string[] args)
    {
        List<string>color = new List<string>();
        color.Add("blue");
        color.Add("red");
        Console.WriteLine("color[0]=" + color[0]);
        Console.WriteLine("color[1]=" + color[1]);
    }
}

Listを使うには2行目のusing System.Collections.Generic;が必要になります。
8行目で作ったcolorというリストに
9行目でblueを追加
10行目でredを追加
Listも配列と同じようにアクセスできます(11,12行目)
実行結果を以下に記載します。
f:id:meryl_2525:20190618111550p:plain

コレクションの初期化

Addを使わずに次のように初期化することもできます。


Listcolor = new List(){"red","blue","green"};

要素の削除

要素の削除は次のように行います。

using System;
using System.Collections.Generic;

 class ColorClass
{
    static void Main(string[] args)
    {
        List<string> color = new List<string>() { "red", "blue", "green" };
        color.RemoveAt(1);
        Console.WriteLine("color[0]=" + color[0]);
        Console.WriteLine("color[1]=" + color[1]);
    }
}

9行目ではcolor[1]を削除しています。

実行結果は以下の通りになります。
f:id:meryl_2525:20190618112624p:plain
color[1]blueが削除されたので、color[2]にあったgreencolor[1]になりました。

列挙型

列挙型はenumを用いて以下のように定義します。


enum (オブジェクト名):(整数型) {列挙子1,列挙子2,列挙子3・・・};

例です。

using System;

    class Enum
    {
    enum Days { Mon, Tue, Web=100, Thu, Fri, Sat=500, Sun }
   
        static void Main(string[] args)
        {
        Days a;
        a = Days.Sat;

        Console.WriteLine(Days.Tue);
        Console.WriteLine((int)Days.Web);
        Console.WriteLine((int)Days.Sun);
        Console.WriteLine(a);

        }
    }

5行目で列挙型を宣言しています。=を用いて任意の整数値を与えることができます。
10,12行目(列挙型名).(列挙定数)で識別子を参照します。
13,14行目(整数型)を前につけて、肩を変換すると整数値を参照できます。

実行結果を以下に記載します。
f:id:meryl_2525:20190618133139p:plain