トップページ > 過去ログ > 記事閲覧
平行光源の明るさについて
名前:たくぞう 日時: 2010/08/21 20:53

平行光源を用いて背景である遠くのオブジェクトに光を当てたのですが、原点(0,0,0)から遠ざかるにつれ光が減衰しているように暗くなってしまいます。 ポイントライトを離して配置する事で代用しようとも考えたのですが、見た目に少し違和感が残ります。 何とか平行光源を明るくすることは出来ないでしょうか。

Page: 1 |

Re: 平行光源の明るさについて ( No.1 )
名前:管理人 日時:2010/08/26 08:54

ご報告ありがとうございます 再現を試みようと以下のようなプログラムを組んでみたのですが、 原点からオブジェクトをどれだけ離してもライティング結果に変化はありませんでした #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int ModelHandle ; VECTOR ModelPos ; VECTOR CameraPos ; ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) { // エラーが発生したら直ちに終了 return -1 ; } // 3Dモデルの読み込み ModelHandle = MV1LoadModel( "DxChara.x" ) ; // 描画先を裏画面に SetDrawScreen( DX_SCREEN_BACK ) ; // ディレクショナルライトの方向を設定 ChangeLightTypeDir( VGet( 1.0f, -1.0f, 1.0f ) ) ; // モデルの位置とカメラの位置を設定 ModelPos = VGet( 1000000.0f, 0.0f, 1000000.0f ) ; CameraPos = VGet( 1000000.0f, 250.0f, 1000000.0f -800.0f ) ; // ループ while( ProcessMessage() == 0 ) { // 画面をクリア ClearDrawScreen() ; // シフトキーを押しながら方向キーでカメラを、普通に方向キーでモデルを移動 if( CheckHitKey( KEY_INPUT_LSHIFT ) ) { if( CheckHitKey( KEY_INPUT_LEFT ) ) CameraPos.x -= 100.0f ; if( CheckHitKey( KEY_INPUT_RIGHT ) ) CameraPos.x += 100.0f ; if( CheckHitKey( KEY_INPUT_UP ) ) CameraPos.z += 100.0f ; if( CheckHitKey( KEY_INPUT_DOWN ) ) CameraPos.z -= 100.0f ; } else { if( CheckHitKey( KEY_INPUT_LEFT ) ) ModelPos.x -= 100.0f ; if( CheckHitKey( KEY_INPUT_RIGHT ) ) ModelPos.x += 100.0f ; if( CheckHitKey( KEY_INPUT_UP ) ) ModelPos.z += 100.0f ; if( CheckHitKey( KEY_INPUT_DOWN ) ) ModelPos.z -= 100.0f ; } // カメラの位置をセット SetCameraPositionAndTarget_UpVecY( CameraPos, VAdd( CameraPos, VGet( 0.0f, 0.0f, 1.0f ) ) ) ; // モデルの位置をセット MV1SetPosition( ModelHandle, ModelPos ) ; // 3Dモデルを描画 MV1DrawModel( ModelHandle ) ; // カメラの位置を描画 DrawFormatString( 0, 0, GetColor( 255,255,255 ), "CameraPos x:%.1f y:%.1f z:%.1f", CameraPos.x, CameraPos.y, CameraPos.z ) ; // モデルの位置を描画 DrawFormatString( 0, 16, GetColor( 255,255,255 ), "ModelPos x:%.1f y:%.1f z:%.1f", ModelPos.x, ModelPos.y, ModelPos.z ) ; // 操作方法を描画 DrawString( 0, 464, "方向キー:モデルを移動 方向キー+左シフトキー:カメラの移動", GetColor( 255,255,255 ) ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } ↑初期座標の時点で原点から 1000000.0f 離れています 原点からどのくらいの距離を離した場合に暗くなってしまったのか教えて頂けないでしょうか? あと、最新バージョンではもしかすると直っているかもしれませんので、もし上記のテストプログラムでも 同様の現象が発生してしまった場合はこちらのバージョンをお試しになってみて下さい m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)

Page: 1 |