Home › Category Archives › コンピュータ

txt2exo Ver0.3.0(ββ)

開発中バージョンの更新については記事を書かないことにしてたのですが、ルビ機能がある程度まとまってきたので。

txt2exoのルビ機能については、0.3.0(β)にて試験実装され、昨日公開の0.3.0(ββ)にて読み込み関連の処理はほぼ完成したといってもよいかもしれません。

ルビ編集については、txt2assのルビ入力同様の操作でルビを入力することが出来ますが、0.3.0(ββ)で以前から多く要望のあったルビ付きタイムタグファイルの読み込みに対応しました。

ただ、私自身がRhythmicaLyricsでルビを入力しないのでうまく動くかは不安です。txt2assで出力したルビ付きタイムタグファイル(*.kra)についてはテストをして、読み込めることを確認していますが、ファイルによってはうまく読み込めない可能性もあります。その場合はコメントでもメールでもいいので連絡していただけるとありがたいです。

txt2exoのルビ機能はまだ読み込み関連が形になっただけであり、レイアウト関連は(ルビに限らず)まだまだです。これからも少しずつ改善していきたいと考えていますので、不満があれば遠慮せずにコメントしていただけると幸いです。

txt2exo Ver0.3.0(ββ)のダウンロードはこちらのページからお願いします。

HSPで文字を縁取りする

久しぶりにHSP触りました。

txt2exoのプログラムで少しきになるところがあった(プレビューの縁取り)ので、そこをモジュール化してみました。

実際はもう少し違うプログラムですが、ここでは文字の縁取り部分だけです。

#module
#deffunc fuchimes str a , int n, int r , int g , int b
bold = n
color_r = r : color_g = g : color_b = b

;色範囲を0~255に制限
if color_r > 255 : color_r = 255
if color_g > 255 : color_g = 255
if color_b > 255 : color_b = 255
if color_r < 0 : color_r = 0
if color_g < 0 : color_g = 0
if color_b < 0 : color_b = 0

if bold < 0 : bold = 0

;現在のカラーコードを一時保存
ncolor_r = ginfo_r
ncolor_g = ginfo_g
ncolor_b = ginfo_b

redraw 0

;縁描画
color color_r,color_g,color_b
pos ginfo_cx-boid , ginfo_cy-boid
repeat bold*2+1 ;縦移動
	cposy_x = ginfo_cx : cposy_y = ginfo_cy
	repeat bold*2+1 ;横移動
		cposx_x = ginfo_cx : cposx_y = ginfo_cy
		mes a
		pos cposx_x+1 , cposx_y
	loop
	pos cposy_x , cposy_y+1
loop

;中心文字描画
color ncolor_r,ncolor_g,ncolor_b
pos cposy_x+bold , cposx_y-bold
mes a

redraw 1

return
#global

fuchimes "Hello World!",5,100,140,235

fuchimes “文字列”,縁の太さ,カラーコードR,カラーコードG,カラーコードB

文字色は現在の色設定、縁の色はfuchimes命令中で指定した色です。

まぁグーグル先生にかかればこんなの他にいくらでも見つかると思います。

多分これよりも処理が早いものもあると思いますが、頻繁に書き換えないのならこれでいい気もします。

あと、改行を含んでも大丈夫だと思います。

参考になれば。

あらかじめ色を指定(ここでは、255,255,128)しておくとこんな感じになる

HSPで文字に間隔を空けて表示する②

昨日の続きです。

HSP命令リファレンスを眺めていたらsplit命令を見つけたので、字間を空けて表示するモジュールを改良して改行に対応してみました。

#module ;字間で表示命令(改行対応版)
#deffunc jikanmes str a ,int b,int c
_a = a
split _a,"\n",d
cx = ginfo_cx
posx = cx : posy = ginfo_cy
foreach d
	sdim buf,strlen(d(cnt))*2+2
	cnvstow buf,d(cnt)
	repeat
		pos posx,posy
		tmp = wpeek(buf,cnt*2)
		if tmp = 0 : break
		mes cnvwtos(tmp)
		posx = posx+ginfo_mesx+b
	loop
	posx = cx : posy = posy+ginfo_mesy+c
loop
return
#global

jikanmes "あいうえお\nかきくけこ\nさしすせそ",20,30

第2引数が文字間隔、第3引数が行間隔となっています。

改行コードごとに配列に格納し、それぞれ前回と同じ処理をしています。

また、mes命令と同様、あらかじめpos指定しておけば、その点を基準に描画されます。

HSPで文字に間隔を空けて表示する

HSPで文字を表示するときに使うmes命令ですが、文字間隔を空けて表示するには少し不便ですね。

確かにtexoptとtexmesを使って表示することは可能なのですが、結構使いにくいので今回はその命令を作ってみます。

(実は字間設定プレビューでtexmesを使おうとしてテクスチャとかいろいろしてたら面倒くさくなった)

コードは以下のとおりです。

#module ;字間で表示命令
#deffunc jikanmes str a ,int b
sdim buf,strlen(a)*2+2
cnvstow buf,a
posx = ginfo_cx : posy = ginfo_cy
repeat
	pos posx,posy
	tmp = wpeek(buf,cnt*2)
	if tmp = 0 : break
	mes cnvwtos(tmp)
	posx = posx+ginfo_mesx+b
loop
return
#global

jikanmes "あいうえお",10

このようなコードでどうでしょうか。まあ言ってしまえば文字数カウンタの応用ですが。

この場合では、文字間隔が10pxになっていますが、第2引数の値によって間隔が変更できます。

改行コードが入った場合は対応できませんが、少し書き換えれば対応できるのではないでしょうか。

tmpが改行コードのときに分岐したり、改行ごとに配列に格納してループしたり…

私は特に複数行の必要がなかったので書きません。

一助になれば幸いです。

txt2exo Ver0.2.0公開

記事にするほどでもないのですが、txt2exo Ver 0.2.0をリリースしたので報告します。

0.1.0からの変更点は以下のとおりです。

  • 読み込みファイルの中に*.kraを追加
  • 字間設定を追加
  • フィルタ一括設定追加

また、Ver0.2.0 (β2) からの変更点は以下のようになっています。

  • 字間設定プレビュー対応
  • フィルタ一括設定のfontsizeオプションの不具合修正(以下のようなものが反映されませんでした…)
    • #fontsize# (単体)
    • #(fontsize+10)*3/2# (計算式中の括弧)

ダウンロードはこちらからお願いします。

また、txt2exoに関するWikiを作ってみましたので、ご自由に編集してください。
新規ページはアドレスバーにページ名を入力することで作成できます。

それではしばらくルビや段数指定にとりかかります。

txt2exo Ver. 0.2.0 Beta2 公開

txt2exo Ver. 0.2.0(β2)版の公開です。

字間設定使用時、歌詞に英語が含まれている場合にワイプがずれる問題を修正しました。

DL等はこちらからお願いします。

以後ベータ版の更新は上記のリンク先にて行い、正式版のアップデートのみこちらで扱います。

HSPで文字数を数える

HSPのstrlenってバイト数を返すので、日本語と英語が混じってたらうまく文字数数えられないよね。
ってことで、文字数を返す関数を作ってみた。

文字をUnicodeに変換して(全て2バイト文字になる)から1文字ずつ切り出していき、終わりになったらループを抜けるだけですが。

というのもtxt2exoで字間設定作ってる時に必要になったので、メモも兼ねて。

#module ;文字数を数えるモジュール
#defcfunc charalen str a

i=0 ;文字数カウンタ
;全部英字ならUnicode変換で2倍で最大。
sdim buf,strlen(a)*2+2

cnvstow buf,a
repeat
	tmp = wpeek(buf,cnt*2)
	if tmp = 0 : break
	i=i+1
loop

return i

#global

text="HSPでいろんな文字が混じってるときに文字数を返す関数だよ!"
mes charalen(text)

こんな感じで使ってみてください。strlen()と同じ感覚で使えると思います。

例では30と返ってきます。

なんかもっと効率よく書けそうだけど初心者なのでこれくらいしか書けないよ。もっと勉強しないと…

*6/29追記*
64字以上かつ全て英数字の場合にエラーになるのを修正。

txt2exo Ver. 0.2.0 Beta版 公開

txt2exo Ver. 0.2.0(β)版の公開です。

ベータ版のダウンロードはこちらからお願いします

今回追加した機能は、字間設定とフィルタ一括設定です。

字間設定はAviUtlの字間オプションに該当し、字間によってワイプ幅も自動で計算されます。
以下の画像は上段が字間:-5、中段が字間:0、下段が字間:5となっています。
ただし、現在はプレビュー機能は字間に対応していないので、今後(できれば正式版では)対応したいと考えています。

次に、フィルタ一括設定です。こちらがメインです。字幕詳細設定が増え、フィルタを設定できるようになっています。

この例では、ワイプ前レイヤー、ワイプ後レイヤーの欄にそれぞれ記入されており、出力すると、字間設定で紹介したような文字のグラデーションになります。

タグは現在、#id#、#count#、#fontsize#が使えます。
#id#と#count#はフィルタの始まりに、[#id#.#count#]のように使ってください。

AviUtlからオブジェクトファイルで出力したものはテキストファイルなのでそこからコピペしても利用できますが、[5.3]のようになっている部分は必ず上記のように書き換えてください。

また#fontsize#はfontsizeが文字サイズに置き換わった後、計算もできますので、#fontsize/6#や#fontsize*2/3#のような記述もできます。また小数点以下は切り捨てとなります。

また、ワイプのクリッピングフィルタはワイプ前レイヤーのフィルタの後に付加されます。
あとあとでは、クリッピングの前後ともにカスタマイズできるようにしたいです。

それではいくつか例を挙げておきますので、カスタマイズして使ってください。

ワイプ前レイヤー ワイプ後レイヤー 注記
[#id#.#count#]
_name=縁取り
サイズ=5
ぼかし=0
color=000000
file=
[#id#.#count#]
_name=グラデーション
強さ=100.0
中心X=0
中心Y=-#fontsize/6#
角度=0.0
幅=#fontsize*2/3#
blend=0
color=ffa903
no_color=0
color2=f173a9
no_color2=0
type=0
[#id#.#count#]
_name=グラデーション
強さ=100.0
中心X=0
中心Y=#fontsize/6#
角度=0.0
幅=#fontsize*2/3#
blend=0
color=000000
no_color=1
color2=7515e8
no_color2=0
type=0
[#id#.#count#]
_name=縁取り
サイズ=5
ぼかし=0
color=ffffff
file=
字間設定の例のように、ワイプ後の文字が3色グラデーションになります。
必ずメイン画面の字幕設定で「縁取りなし」を指定してください。3色は上から、ffa903 → f173a9 → 7515e8 になっています。

ワイプ後レイヤーの該当部分を書き換えれば自由に変更できます。
Zipファイルにカラーパレットを同梱しているので、もしよければお使いください。
16進数カラーコードでクリップボードにコピーできます。

この例では、グラデーションをかけたあとに縁をつけるために、フィルタで縁取りをおこなっています。

縁取り幅が自由に変えられるのが特長です。

なし [#id#.#count#]
_name=シャドー
X=5
Y=5
濃さ=50.0
拡散=30
影を別オブジェクトで描画=0
color=000000
file=
これは影のサンブルです。濃さや拡散の値を変えると少しづつ雰囲気も変わってくるでしょう。字幕設定の縁取りはありでもOKです。
[#id#.#count#]
_name=フェード
イン=0.50
アウト=0.00
[#id#.#count#]
_name=フェード
イン=0.00
アウト=0.30
 フェードです。注意点はフェードアウトの時間を残存時間以下にすることです。
でなければワイプが終わる前に消え始めます。
また、色の関係上ワイプ後レイヤーをフェードインが終わるまで時間を削ったほうが見栄えが良くなるでしょう。
効果としてとらえるならばそれはそれでおもしろいかもしれません。
将来的には設定からいじれるようにしたいと思っています。

txt2exo Ver0.10公開

以前Twitterでちょこっと公開していたニコカラ作成補助ツール「txt2exo」を公開しました。

ダウンロード→txt2exo

カラーピッカー Ver 0.1公開

てさぐれ!部活もの よくあるOP検証動画 PCゲーム原作編の最後で紹介したカラーピッカーを公開します。

くれぐれも使用は自己責任でお願いします。

ダウンロードはカラーピッカーのページからお願いします。

注意点

  • 透過画像をクリップボードから読み込んだ場合、背景は黒色になります。
  • 画像はディスプレイサイズの80%に自動縮小されます。
  • が、拡大機能は付いていません。