トップページ > 過去ログ > 記事閲覧
ライト
名前:baru 日時: 2012/03/30 14:03

このサイトにあるDrawSphere3D関数のサンプルプログラムを実行すると一部分だけ球が光って反対側が見えないんですよすべての部分が見えるようにするにはどうすればいいんですか?

Page: 1 |

Re: ライト ( No.1 )
名前:いっち 日時:2012/03/30 18:55

オブジェクトの見え方はカメラの位置や光源の設定で変わってきます。 詳しくはリファレンスの「カメラ関数」や「ライト関数」の項目をご覧下さい。
Re: ライト ( No.2 )
名前:baru 日時:2012/04/01 09:40

わかりましたやってみます ありがとうございました
Re: ライト ( No.3 )
名前:baru 日時:2012/04/02 09:35

ライトをディレクショナルライトにしてすべての方向に光がいくようにすればいいとおもうんですが 何か方法はありませんか?
Re: ライト ( No.4 )
名前:hei 日時:2012/04/04 00:20

>>ライトをディレクショナルライトにしてすべての方向に光がいくようにすればいいとおもうんですが 何か方法はありませんか? ディレクショナルでは無理です。 ポイントライトなら何もしなくても全方向ですが。 基本的にどのライトでも、ポリゴンモデルには陰影ができます。 モデルのすべてを光らせたいなら、複数のライトを同時に当てるか、マテリアルの自己発行を最大にして光っているように見せるしかないかと。
Re: ライト ( No.5 )
名前:いっち 日時:2012/04/04 00:55

heiさんも仰っていますが、影の部分が強すぎる(黒すぎる)ということでしたら、 SetMaterialParam でアンビエントカラーかエミッシブカラーを調整することで解決するかもしれません。 以下はリファレンスと参考になりそうなスレッドです。 > ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.html#R14N11 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=1516 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2019 //- 以下、テストコード -// #include "DxLib.h" int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int ) { ChangeWindowMode( TRUE ); SetWindowText( "DxLib:" DXLIB_VERSION_STR ); if ( DxLib_Init( ) == -1 ) return -1; int white = GetColor( 255, 255, 255 ); MATERIALPARAM MatParam; MatParam.Diffuse = GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ); MatParam.Ambient = GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ); MatParam.Specular = GetColorF( 0.0f, 0.0f, 0.0f, 0.0f ); MatParam.Emissive = GetColorF( 0.250f, 0.0f, 0.0f, 0.0f ); MatParam.Power = 25.0f; SetDrawScreen( DX_SCREEN_BACK ); SetUseZBuffer3D( TRUE ); SetWriteZBuffer3D( TRUE ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { ClearDrawScreen( ); DrawFormatString( 0, 0, white, "TEST" ); SetMaterialParam( MatParam ); DrawSphere3D( VGet( 320.0f, 200.0f, 0.0f ), 80.0f, 32, GetColor( 255, 0, 0 ), GetColor( 255, 255, 255 ), TRUE ); ScreenFlip( ); } DxLib_End( ); return 0; }
Re: ライト ( No.6 )
名前:baru 日時:2012/04/04 19:44

丁寧なコメントをありがとうございました できました 黒い部分のことを影というんですね
Re: ライト ( No.7 )
名前:baru 日時:2012/04/04 20:01

解決しました
Re: ライト(解決ずみ) ( No.8 )
名前:baru 日時:2012/04/04 20:02

かいけつしました
Re: ライト ( No.9 )
名前:baru(解決) 日時:2012/04/04 20:03

解決しました
Re: ライト ( No.10 )
名前:いっち 日時:2012/04/04 22:34

補足です。 以下の URL にある通り、現状ではアンビエントカラーにディフューズカラーが反映されないようです。 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1792 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2141 テクスチャを設定することで対策になるようですが、 DrawSphere3D のような描画関数ではテクスチャを貼れないので、 色の違う物体を描画するたびに SetMaterialParam を行う必要があると思います。

Page: 1 |