; e3dhsp.dll test script #include "e3dhsp3.as" #module #deffunc waitbyfps int p1, var fps E3DWaitbyFPS@ p1, fps await 0 return #global dim keybuf, 256 screenw = 640 : screenh = 480 screen 0, screenw, screenh, 1 title "Easy3D for HSP3 sample" ;開発中は下の行のコメントアウトを外すことを推奨します。 ;E3DEnableDbgFile ;初期化 E3DInit 0, -1, 0, 16, 0, scid1 ;カメラの初期化 camposx = 5220.0 : camposy = 1500.0 : camposz = 0.0 E3DSetCameraPos camposx, camposy, camposz camdegxz = 270.0 : camdegy = 0.0 E3DSetCameraDeg camdegxz, camdegy ;file のpath 用のバッファーの作成 pathlen = 2048 sdim mediadir, pathlen mediadir = dir_cur + "\\Media" sdim pathbuf, pathlen, 2 ;projectionの変更をしたいときは、以下の2行を有効にしてください。 ;proj_near = 100.0 : proj_far = 20000.0 : proj_fov = 45.0 ;E3DSetProjection proj_near, proj_far, proj_fov E3DCreateProgressBar E3DSetProgressBar 0 ;地面データのロード pathbuf.0 = mediadir + "\\groundplane1_p_small.sig" E3DSigLoad pathbuf.0, hsid0 posx0 = 0.0 : posy0 = 0.0 : posz0 = 0.0 degx0 = 0.0 : degy0 = 0.0 : degz0 = 0.0 E3DSetPos hsid0, posx0, posy0, posz0 E3DSetDir hsid0, degx0, degy0, degz0 frameno0 = 0 E3DSetProgressBar 30 ;猫妹データのロード pathbuf.0 = mediadir + "\\ni_parts_6_bone.sig" E3DSigLoad pathbuf.0, hsid1 pathbuf.0 = mediadir + "\\ni_parts4_idling.qua" E3DAddMotion hsid1, pathbuf.0, mk1_idling, max1_idling E3DSetProgressBar 60 E3DSetMotionKind hsid1, mk1_idling posx1 = 1000.0 : posy1 = 0.0 : posz1 = 0.0 degx1 = 0.0 : degy1 = 90.0 : degz1 = 0.0 E3DSetPos hsid1, posx1, posy1, posz1 E3DSetDir hsid1, degx1, degy1, degz1 frameno1 = 0 newmk1 = 0 ;猫姉データのロード pathbuf.0 = mediadir + "\\na_parts_1_bone.sig" E3DSigLoad pathbuf.0, hsid2 pathbuf.0 = mediadir + "\\na_parts1_idling.qua" E3DAddMotion hsid2, pathbuf.0, mk2_idling, max2_idling E3DSetProgressBar 90 E3DSetMotionKind hsid2, mk2_idling posx2 = -1000.0 : posy2 = 0.0 : posz2 = 0.0 degx2 = 0.0 : degy2 = -90.0 : degz2 = 0.0 E3DSetPos hsid2, posx2, posy2, posz2 E3DSetDir hsid2, degx2, degy2, degz2 frameno2 = 0 newmk2 = 0 ;以下、ライトの設定 lightdirx1 = 0 lightdiry1 = 0 lightdirz1 = 1 lightr1 = 128 lightg1 = 128 lightb1 = 128 ;平行光源 E3DCreateLight lid1 E3DSetDirectionalLight lid1, lightdirx1, lightdiry1, lightdirz1, lightr1, lightg1, lightb1 pathbuf.0 = mediadir + "\\lake.bmp" pathbuf.1 = mediadir + "\\cloud3.bmp" E3DCreateBG scid1, pathbuf.0, pathbuf.1, 0.001, 0.0, 0 chkfps1 = 0 E3DDestroyProgressBar ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;以下、頂点のアルファ設定用の変数 ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! alphadir = 1 alpha1 = 0.5 E3DSetMaterialBlendingMode hsid1, -1, 0 *main ; keybuf変数は、メインループの外で、dim keybuf, 256 として、確保しておいてください。 E3DGetKeyboardState keybuf if keybuf.VK_ESCAPE = 1 : goto *bye ; [ESC]で終了 E3DSetNewPose hsid1, frameno1 E3DSetNewPose hsid2, frameno2 E3DChkInView scid1, hsid0 E3DChkInView scid1, hsid1 E3DChkInView scid1, hsid2 E3DBeginScene scid1 ;不透明部分の描画をする E3DRender scid1, hsid0, 0, frameno0, 0 E3DRender scid1, hsid1, 0, frameno1, 0 E3DRender scid1, hsid2, 0, frameno2, 0 ;半透明部分の描画をする E3DRender scid1, hsid1, 1, frameno1, 0 E3DRender scid1, hsid2, 1, frameno2, 0 E3DEndScene E3DPresent scid1 ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ;以下で、頂点のアルファ値の変更をします。 ;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! if alphadir = 0 : alpha1 += 0.01 if alphadir = 1 : alpha1 -= 0.01 if alpha1 > 0.5 : alphadir = 1 if alpha1 < 0.0 : alphadir = 0 E3DSetMaterialAlpha hsid1, -1, alpha1 ;////////////////////////////// ;キーに応じて、ブレンディングモードを変更します ;////////////////////////////// if keybuf.'1' = 1 : E3DSetMaterialBlendingMode hsid1, -1, 0 ;頂点アルファモード if keybuf.'2' = 1 : E3DSetMaterialBlendingMode hsid1, -1, 1 ;アッドモード if keybuf.'3' = 1 : E3DSetMaterialBlendingMode hsid1, -1, 2 ;アッドモードその2 waitbyfps 100, chkfps1 goto *main *bye E3DBye end