元放送部員の雑記帳

管理者:殻栗ポルタ/でんきやさんの備忘録だったり、紹介記事だったり。

Griffpatch氏、Scratch3のトンデモナイChrome拡張機能を公開する

大急ぎで書いてるので見やすいスタイルとかは無視します。
2019/09/14の夜、Griffpatch氏がScratch3のChrome向け拡張機能を公開しました。
内容はハットブロックの検索とジャンプです。(日本語での動作も確認)
flag(旗)が押されたとき、クローンされたとき、[任意の]キーが押されたとき、[メッセージ]を受け取ったとき……など、ハットブロックであれば何でも検索できます。
上のCtrlとfキー(Win、Mac共通)で入力ボックスに飛べるショートカット機能付きですよ。


元投稿はコチラから↓
www.youtube.com
インストールはコチラから↓
chrome.google.com


ちなみに僕の検証環境は、
macOS Mojave10.14.6
Chrome76.0.3809.132(official build)
です。

P.S. GoogleChrome更新するのを忘れていました。検証環境確認のためChromeバージョンを見たところで気が付きました :P

他の記事も書いているのですがこれは緊急ニュースだったので学校のビデオ制作も課題もそっちのけで書きました。(忙しいのに何やってんだこいつ)

追記(2019/9/23)

昨日の9/22に、Firefox向けScratch 3 developer toolsを公開したようです。仕事がお早い。
addons.mozilla.org
また、少しずつ更新しているようで、基本的な機能は変わらないものの、ちょっとした進化が進んでいるようです。
検索欄の右にあるClean Upできれいにするが実行できたりなど、地味に役立つ良い機能ですね。
今後に期待ですね。


ではまた、次の記事でお会いしましょう。

I don't laugh.に出てくるキャラ紹介と余談①「DIST_GRIMREAPER」について

 気が向いたら更新していこうかな、ってシリーズ第一回。
 今回は自分の代名詞でもありPixivに連載中の小説「I don't laugh.」の主人公、DIST_GRIMREAPER(以下、DISTと略)について、お話します。
 ※自分の活動名も同じですが、紹介するのは自分のことではなく、自作のキャラクターのことです!

本編読んでない方はこちらから↓
www.pixiv.net

DISTというキャラクターが生まれたきっかけ

 自分がDISTを作ったとき、2年以上も前のことは、今でも覚えています。あれはまだ、キャラクターをマウスで描いていた時代です(あずぺでベジェ曲線にハマっていた時代……)。DISTが完成したより前は、目が出ていない死神(通称、若かりし死神)を自分の象徴的なキャラクターとして使っていました。しかし使っているうちに思ったのです。「目が出てなくて、非常に格好がつかない」と。
 あるときあるチャットでごっこ遊びをしていたときのこと、当時MGSVの動画にハマっていて、BIG BOSS風にイメチェンした死神として眼帯をつけた姿を考えていました(当時の俺はなんて勝手なことを……)。そしてそのごっこ遊びをしてる中、「攻撃を受け、右目に矢が刺さった」という設定を作り、眼帯をつけた姿を「Punished Venom SU」と名付け(←またも勝手なことを)、遊びを進めていました。その後、覚醒した姿として目を描き入れたのです。そのときには、今のデザインとかなり近くなっていました。
 そしてまたあるとき、若かりし死神に飽きたことから新キャラを作ることを決意し、構想をねっていきました。そして出てきた案が「左目に紫色の謎のマーク」「変形した大鎌」となり、組み合わせてできたものが現在のDISTというわけです。当時は若かりし死神の成長した姿という設定でやってました。
 2年前、名前「THE・GRIMREAPER」じゃなくて固有名詞をつけたいと考えて、改名した結果、「DIST_GRIMREAPER」となったのです。DISTの由来は秘密です。
 去年、アイコンを新しくするとき、フードをかぶっている姿がキャラが立ちにくいうえ髪の毛で遊べないため、フードを取った姿を描いてから、今はずっとその状態です。

 若かりし死神が最初のオリキャラなわけですが、どうしてそいつができたのかはまたいつか気が向いたら書きます。

I don't laughシリーズにおけるDIST

 ここからは小説での設定について話していきます。

 実家から離れた県外の高校へ通っている明宮 直(この記事の執筆時点では、本編でこの名前は出ていません)は、その高校の近くで一人暮らしをしていました。
 ある日、両親が事故に遭ったと聞き、実家付近の病院へ急ぐも既に両親は息絶えていました。絶望した彼は山から落ち自殺を図りました。しかし、転落し頭を強打したにもかかわらず、目が覚めてしまいます。場所も元の世界ではなく「死神界」に移っていました。人間世界での死神の減少により、次に死んだ人間を死神にするという計画に巻き込まれた彼は、死神として生き返り、DISTの名を授かり活動していくのでした。

 これが小説でのDISTの設定です。当然、自分の生い立ちとは一切関係ないですよ。

紹介を終えて

 振り返ってみると意外と忘れていた事もあったりして、意外と楽しかったです。正直、DISTはモデルとかも無いので語れることは殆どなかったのですが。(笑)
 次回はその他の死神やカルト教団、新キャラCandy.Dについて書いたりしてみようかな、と思っています。琳香は自分が作ったキャラではないので、書く気はありません。

それではまた次の記事で。

Scratch3.0の拡張機能を作ってみる - #0 環境整備

きっかけ

Scratch、とてもいいサービスだと思いますが、カスタムしてできるのは「ブロック」の定義のみなので値を返す文字列や真偽を返すレポーターが作れないんですよね。
そこで数学系のレポーターやインプットマネージャみたいなのを作れればいいなー、と思った次第です。

 

開発の準備

1.必要なソフトのインストール

Scratchの日本語Wiki拡張機能開発についての記事を参考にソフトのインストールをします。
ja.scratch-wiki.info
具体的には、Node.js
nodejs.org
それと、Git
git-scm.com
この2つをインストールします。

Node.jsはnvmやnodebrew、nodistを使う方法がありますが、とりあえず自分は公式サイトのインストーラを使いました。また、先程の日本語ScratchWikiではバージョン8を勧めていましたが、自分が使っているNode.jsは10.16.0です。

今のところ開発している分には、全く支障はないのでとりあえず手軽なインストーラで良いかと思います。

念の為、ちゃんとインストールされているか確認もしましょう。

$ node -v
$ npm -v
$ git --version

2.Scratch3.0を動かす準備から、実際に動かすまで

ソフトのインストールが確認できたら、Scratch3.0を構成するファイルをダウンロードさせ、npmに設定します。ディレクトリは自分のアカウントのフォルダ(/Users/xxxx)直下にしてますが自由です。
自分はMacですが、他OSの方も手順はさほど変わらないと思います。

$ git clone --depth 1 https://github.com/llk/scratch-vm.git
$ git clone --depth 1 https://github.com/llk/scratch-gui.git

以降、Windows以外のOSではnpmのコマンドに「sudo」(管理者権限で実行)を最初につける必要があるので注意。

$ cd scratch-vm
$ npm i
$ npm link
$ cd ..\scratch-gui
$ npm i
$ npm link scratch-vm

これで必要なファイルは揃いました。以下のコマンドを打って実行してみましょう。

$ npm start

途中、Replace Autoprefixer browsers option to Browserslist config.みたいに出るけど動作に支障はないのでとりあえず無視して待ちます。何か分かり次第対処します。

ℹ 「wdm」: Compiled successfully.

とでれば成功です。http://localhost:8601/にアクセスしてみましょう。

f:id:DIST_GRIMREAPER:20190714224112p:plain
実際に出てきたScratch3.0の画面。ヘッダーを見ると、公式サイトのエディタではないことがわかる。

終わりに

実はもう既に環境構築し開発していたのですが、どうもうまく起動しなくなったので再構築も兼ねて記事にしました。
どうでもいいけど、npmで起動したScratch3.0GUIのアイコン、Scratch3.0正式リリースの前のベータ版のアイコンと同じですね。
次回は簡単な拡張機能を作り、実行させる予定です。

次回→まだ

UnityアプデしたらTextMeshProがエラー吐いた

アップグレードしたら…… 

Unity2017で作っていたゲームを2019にアップグレードしたら、大量のエラーをお見舞いされました。273くらいだったかな……。

 その中でもとくに、多かったのが以下のエラーです。

Feature `out variable declaration' cannot be used because it is not part of the C# 4.0 language specification

f:id:DIST_GRIMREAPER:20190630230632p:plain

ほとんどをこのタイプのエラーが占めていた。

見るとTextMeshProが原因のようですね。何故に。

エラーの解消

ScriptingRuntimeVersionの変更

このスレッドに、こう書いてあります。

QA replied with "Change Scripting Runtime Version to .NET 4.x" and closed the issue. Not sure if that's the proper solution though, since this issue did not exist in 2019.1.0b4. Something did change between b4 and b9 which now causes this issue.
 

 ……ほう。とりあえずやってみました。

 

Edit→ProjectSettings…

f:id:DIST_GRIMREAPER:20190630231326p:plain

→Player→Other Settings→Scripting Runtime Versionを.NET 3.5から.NET 4.0に。

f:id:DIST_GRIMREAPER:20190630231440p:plain

……すると、今度はエラーが変わりました。

'FaceInfo' does not contain a definition for 'lineHeight' and no accessible extension method 'lineHeight' accepting a first argument of type 'FaceInfo' could be found (are you missing a using directive or an assembly reference?)

f:id:DIST_GRIMREAPER:20190630232126p:plain

TextMeshProをダウングレード

調べると、こちらの記事に対処法が書かれていました。

このゲームはTinyModeを使っているわけではありませんが、とりあえず1.3.0にしました。

f:id:DIST_GRIMREAPER:20190630232527p:plain

すると、総数は減ったのですが、また新たなエラーが出てきました。

The call is ambiguous between the following methods or properties: 'TMPro.TMPro_ExtensionMethods.Multiply(UnityEngine.Color32, UnityEngine.Color32)' and 'TMPro.TMPro_ExtensionMethods.Multiply(UnityEngine.Color32, UnityEngine.Color32)' 

 こちらはスクショを忘れました。

データの入れ直し――解決!

Unity2018にアプデしたらTextMeshProでエラーが出た | pc-memoという記事で全く同じエラーだったので見てみました。(この記事にも更に元記事があるみたいですが、手順が細かく書かれているのでこちらのリンクを貼りました)

スクショはないのですが、

1.TextMeshProフォルダを削除

2.プロジェクトを閉じ、もう一度開く

3.Window→TextMeshPro→ImportTMPEssentialResourcesを開いてImportする

4.Edit→ProjectSettings→EditorSettingsに進み、

 ・Version control の Mode を Visible Meta Filesに

 ・Asset Serialization の Mode を Force Textに

 する

5.Window→TextMeshPro→ProjectFilesGUIDRemappingToolでScanして、Saveする

 

……するとTextMeshPro関係のエラーが全て消えました!

でも、PostProcessingとかもちょっと吐いてたりするから、大変……

 

最終的にちゃんと動作するように戻せました、よかったよかった。

 

ではでは。

三度目の正直。

初めましての方は初めまして。

多分投稿からすぐあとにこの記事を見ている人は自分のことを知っている方だと思いますが。

このブログの管理者、DIST(ディスト)と申します。

今まで別名義でBloggerWixを転々としてきましたが、今日からはてなブログで活動していきたいと思います。

このブログでは備忘録レベルのものからチュートリアルものまでやっていく……という予定です。

いつまで続くかはわかりませんが、これからよろしくお願いします。

 

多分UnityC#が多くなるかと……

x264GUIExでの、H.264出力時のエラーの対処。

移行記事です。
今回起きたエラーはこちらです。

auo [error]: 出力音声ファイルがみつかりません。qaacでの音声のエンコードに失敗しました。
auo [error]: 音声エンコードコマンドラインは…
auo [error]: ".exe.files\qaac.exe" -q 2 --abr 128 --ignorelength -o "D:\test\test_audio.m4a" "-"
qaac [error]: ERROR: CoreAudioToolbox.dll: 指定されたモジュールが見つかりません。

[対処法1]qaac.exeのパスを確認する
​​
f:id:DIST_GRIMREAPER:20191215073555p:plain
 
ファイル→プラグイン出力→拡張x264出力(GUI)Ex→ビデオ圧縮のx264GuiExの画面を表示して、qaac.exeの指定(画像右上赤枠部分)のところのパスを確認してください。

→自分は正常だった

[対処法2]編集しているファイルの中身をエクスポートして、新しいファイルに入れ直す
単純に、編集ファイルが原因ということもありえます。
拡張編集のタイムライン上で右クリック→ファイル→オブジェクトファイルのエクスポートでexoファイルを出力。
Aviutl(拡張編集ではない)の画面のファイル→閉じるをしてから、新しくプロジェクトファイルを作成し、拡張編集のタイムライン上で右クリック→ファイル→オブジェクトファイルのインポートでexoファイルを入れます。

→自分はだめだった

[対処法3]フリーソフトを入れてはいけない場所に入っていないか確認する
実は、Windowsには"フリーソフトを入れてはいけない場所"があるのです。
それは、"Windowsが管理している場所"なのです。なので、
・ダウンロード
・デスクトップ
・ライブラリ
・ドキュメント
・ピクチャ
・ビデオ
・ミュージック
・C:ユーザー(C:user)
・C:Windows
などのフォルダには入れてはいけないようです。
自分はAviutlも編集するファイルもビデオの中に入れていたので、"D:/Aviutl"など新しくフォルダーを作ってそれらのファイルを移しました。

→移動したけど意味なかった

[対処法4]Appleのメディア再生系のソフトウェアをインストールする
qaac.exeはどうやらApple製品の一部のものが元のようで、iTunesQuickTimeを入れることでそのドライバーがインストールされる(?)ようです(あまり知らない)

→動いた!


以上の4点を試せば、きっと出力できるはずです。
どうぞ、お試しあれ。

UnityC#備忘録-Materialのタイリングをリアルタイムできれいにする(実行環境:5.6.3f1)

移行記事です。

Yughues Free Metal Materialsを使っていると、C#でうまく制御ができないことがわかりした。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BlockMaterial : MonoBehaviour {
    public Material material;
    Vector2 size;

	// Use this for initialization
	void Start () {
        material = gameObject.GetComponent<Renderer>().material; //マテリアルの取得

	}
	
	// Update is called once per frame
	void Update () {
        size = new Vector2(gameObject.transform.localScale.x, gameObject.transform.localScale.z); //オブジェクトの大きさを取得
        material.mainTextureScale = size; //タイリングをセット
	}
}

上のスクリプトだと法線マップのタイリングがうまくいかないようです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlaneMaterial : MonoBehaviour {
    public Material material;
    Vector2 size;

	// Use this for initialization
	void Start () {
        material = gameObject.GetComponent<Renderer>().material; //マテリアルの取得

	}
	
	// Update is called once per frame
	void Update () {
        size = new Vector2(gameObject.transform.localScale.x, gameObject.transform.localScale.z); //オブジェクトの大きさを取得
        material.mainTextureScale = size; //タイリングをセット
        material.SetTextureScale("_BumpMap", size); //タイリングをセット②
    }
}

 という風に一行記述を増やす必要があります。
まあ、Yughues Free Metal Materialsに限らず使うところはあると思いますが。

今回のスクリプトでは再生中にサイズを変更しても適用されるので活用できますね!

一応、もっとしっかりしたアセットもあります。(MasterCube等)
ただ、設定が増えてめんどくさい人やUnityC#の初心者(自分含む)は今回の方法でしてもいいと思います。