HSP3で日本語プログラミング

GOTO文

mes "スタート"

goto *あそこ

*ここ
	mes "ここ"

*あそこ
	mes "あそこ"

mes "ゴール"

stop

モジュール

#runtime "hsp3cl"

#module hoge dummy
#modinit
return
    #modfunc local foo
        mes "hoge"
    return
#global

#module huga dummy
#modinit
return
    #modfunc local foo
        mes "huga"
    return
#global
newmod hogex, hoge
newmod hugay, huga
foo@hoge hogex
foo@huga hugay
;https://qiita.com/YSRKEN/items/bbd3cad4cc1c1de9dcbb
#module ライト dummy
#modinit
	mes "ライトを作りました。"
	return
#modfunc 点ける
	mes "ライトを点けました。"
	return
#global

newmod ライト1,ライト
点ける ライト1

stop

モジュール HGIMG4 モデル登録

#module 盆踊りキャラ id, px,py,pz
#modinit str path, double x, double y, double z
	px = x : py = y : pz = z
	gpload id, path		; モデル読み込み
	setpos id, px,py,pz		; カメラ位置を設定
	mes "盆踊りキャラを作りました。"
	return
#modfunc local 置きなおす double x, double y, double z
	setpos id, x,y,z		; カメラ位置を設定
	mes "置きなおしました。"
	return
#modfunc local 踊る
	gpaddanim id,"ondo",0,-1		; "run"クリップを設定
	gpact id,"ondo"			; "run"クリップを再生
	mes "踊ります。"
	return
#modfunc local 当たり判定をつける
	gppbind id, 0
	mes "当たり判定をつけました。"
	return
#global
;newmod v, 盆踊りキャラ, "res/model", 0.0, 0.0, 0.0
;踊る@盆踊りキャラ 盆踊りキャラ1
#module オブジェクト id, px,py,pz
#modinit str path, double x, double y, double z
	px = x : py = y : pz = z
	gpload id, path		; モデル読み込み
	setpos id, px,py,pz		; オブジェクト位置を設定
	mes "オブジェクトを作りました。"
	return
#modfunc local 置きなおす double x, double y, double z
	setpos id, x,y,z		; オブジェクト位置を設定
	mes "置きなおしました。"
	return
#modfunc local 大きさを変える double x, double y, double z
	setscale id, x,y,z		; オブジェクト向きを設定
	mes "大きさを変えました。"
	return
#modfunc local 向きを変える double x, double y, double z
	setang id, x,y,z		; オブジェクト向きを設定
	mes "向きを変えました。"
	return
#modfunc local 当たり判定をつける
	gppbind id, 0
	mes "当たり判定をつけました。"
	return
#global
;newmod v, オブジェクト, "res/model", 0.0, 0.0, 0.0
;向きを変える@オブジェクト 太鼓外側(0), 0.0, 0.7, 0.0
;当たり判定をつける@オブジェクト 太鼓外側(0)

※2021年10月18日現在?ライトは#moduleすると光らない?

blender2.92でリンクされた&マテリアルのついたオブジェクトのテクスチャをベイクで作る

リンクがある.blendで一枚絵のテクスチャを作るのに必要なこと

・ベイクする
 - ベイクしたいモデルのObject Data PropertyウィンドウでUV Mapsを追加してSmart UV Projectしておく。
 - リンクされたオブジェクトもベイクするにはオブジェクトを選択してMake Local(またはF3キーのMenu SearchでMake Local >ALLを選ぶ)して、.blendをまたがないようにする。
 - ベイクされた結果を書き込む新規画像を、テクスチャを貼りたいオブジェクトのシェーダーノードでテクスチャノードを作っておく(テクスチャノードでNew Imageする)
 - ベイク前にテクスチャを貼りたいオブジェクトを3D Viewで選択しておいて、シェーダーノードでベイクされた結果を書き込みたいテクスチャノードを選んだ状態にしておく。
 - ベイクはCyclesを使ってする。プロパティウィンドウでCyclesにしておいて、そこの下にあるBakeボタンを押す

HSP3でライトをおく

下の文章がソース。

#include "hgimg4.as"

	gpreset

	setcls CLSMODE_SOLID, $404040

	;ライト初期化
	gpresetlight 0, 10, 0
	setcolor GPOBJ_LIGHT, 1,1,1		; ライトカラーを設定
	setdir GPOBJ_LIGHT, 0.0,0.0,0.0		; アンビエントカラーを設定

	;カメラ
	gpnull id_camera			; ヌルノードを生成する
	gpcamera id_camera, 45, 1.5, 0.5, 768	; カメラとして設定する
	gpusecamera id_camera			; 使用するカメラを選択する
	setpos id_camera, 0,4,20		; カメラ位置を設定する

	;ライトをおく; 先に地面をおくと地面が光らない
	gpnull id_alight
	gplight id_alight, GPOBJ_LGTOPT_POINT, 5
	gpuselight id_alight,0
	setcolor id_alight, 1,0.9,0.9		; ライトカラーを設定
	setpos id_alight, 0,1,0

	;箱
	gpbox id_box, 1
	setpos id_box, 0,0.5,0

	;地面
	gpfloor id_floor, 100,100, $884400		; 床ノードを追加

repeat
	stick key,15
	if key&128 : end ; ESCキーで終了

	redraw 0			; 描画開始

	gpdraw				; シーンの描画

	redraw 1			; 描画終了
	await 1000/60			; 待ち時間
loop

carrara6からエクスポートしたDirectXのモデル.xファイルをhsp3のhgimg3でアニメーション再生する。

carrara6でオプションはそのまま変えずにエクスポートして、DXライブラリ置き場で配られているDXライブラリのDxLibModelViewerで一度開いて保存し直してから、hgimg3で読み込んで再生するとアニメーションする。そのとき、アニメーション速度をmodelspeedで調整する。※値は「FPS÷モーションがある最後のフレームの秒数(かかってる秒数)」

MetasequoiaからBlenderにアニメなしテクスチャ付きモデルをインポート

Metasequoiaで面にテクスチャを張るとき、モデルを保存するフォルダにテクスチャファイルも入れておく(テクスチャファイルのファイルパスがファイル名だけになるようにする)。それを.daeで保存してBlenderにインポートするとテクスチャがシェーダーノードでテクスチャノードになって付いている。

blender script tips

blender script

bpy.context.scene.frame_current # いまのフレーム数
bpy.context.view_layer.objects.selected # いまの選択オブジェクト

import bpy
for key in bpy.__dict__.items():
  print(key)

コレクションのオブジェクトの名前を列挙
for obj in bpy.data.objects:
  print(obj.name)

オブジェクトのアトリビュートを列挙
dir(bpy.data.objects['Cube'])

オブジェクトのカスタムプロパティへのアクセス
bpy.data.objects['Cube']['prop']

bpy.data.objects['オブジェクト数:'].data.body = str(bpy.context.scene.frame_current)
“blender script tips” の続きを読む