VP中單品展示時觀察者的設定

2021-10-07 06:30:39 字數 2087 閱讀 5497

觀察者的設計,需要保證任意角度、任意位置能清晰看清物體。

設計思路: 1   座標原點上放置乙個物體,設定乙個dof為observer。

2   場景中放置乙個物體hummer,其他預設建立即可。

3   觀察者的配置:

pobserver_myobserver->addchannel( pchannel );

pobserver_myobserver->addattachment( penv );

pobserver_myobserver->setscene( pscene );

pobserver_myobserver->setlookfrom(pobject_hummer );

4    配置觀察者:

pdofobserve為場景中心的dof,把pobjectobserver設定為pdofobserve的孩子。

這樣,觀察者的位置xyz值就可以通過pobjectobserver來設定實現;

觀察者的姿態hpr值就可以通過pdofobserve來設定實現。

//設定觀察者

pobjectobserver=vpobject::find("hummer");

pobjectobserver->ref();

pobjectdesktop=vpobject::find("desktop");

pobjectdesktop->ref();

//場景中心,觀察者旋轉點

pdofobserver=static_cast(pobjectdesktop->find_named("observer"));

pdofobserver->ref();

pdofobserver->push_back_child(pobjectobserver);

//設定觀察者的最初狀態,參考右手定則。觀察者位於y軸負軸上,俯視y軸正軸

pobjectobserver->settranslate(0.0, -1.50 ,0.2,false);

pdofobserver->setrotate(-20.0,-25.0,0.0,false);

pchannel->setfovsymmetric( 38 ,  -1.000000f );

5    旋轉到不同位置的設定

單品物體放置於座標原點,並不進行任何的移動操作。

本質是通過操作觀察者來實現位置變化和姿態旋轉。

觀察者位於前後左右四個位置時,會產生不同的觀察效果。

這裡主要是通過環境物件penv來改變經緯度和時間,實現光照效果的切換,

從而在四個面都能準確清晰的看清物體。

case vpwindow::key_left:  

pdofobserver->setrotateh(-1,true);

//修改緯度

r=static_cast(abs(pdofobserver->getrotateh())) % 360 ;

if ( r<=135 || r>=225 )

penv->setreferenceposition(0, 70);

else

penv->setreferenceposition(0,-40);

//修改時間

r=static_cast(pdofobserver->getrotateh()) % 360 ;

if ( (r>=45 && r<=135) || (r<=-225 && r>=-315) )

penv->settimeofday(9);

else

penv->settimeofday(14);

break;

效果:

正面:

右面:後面:

左面:

整體效果還不錯,解決了不同角度觀察物體的問題。裡面的時間和緯度還可以仔細調節,效果會更好。

adapter中的觀察者模式

adapter中的觀察者模式 什麼是觀察者模式 觀察者模式所涉及的角色有 抽象主題 subject 角色 抽象主題角色把所有對觀察者物件的引用儲存在乙個聚集 比如arraylist物件 裡,每個主題都可以有任何數量的觀察者。抽象主題提供乙個介面,可以增加和刪除觀察者物件,抽象主題角色又叫做抽象被觀察...

js中的觀察者模式

如下實現乙個通用發布者 定義發布者物件.是定義乙個物件 var publisher subscribe function fn,type this.subscribers type push fn unsubscribe function fn,type publish function publi...

php中的觀察者模式

當乙個物件狀態發生改變後,會影響到其他幾個物件的改變,這時候可以用觀察者模式。像wordpress這樣的應用程式中,它容外部開發組開發外掛程式,比如使用者授權的部落格統計外掛程式 積分外掛程式,這時候可以應用觀察者模式,先註冊這些外掛程式,當使用者發布一篇博文後,就回自動通知相應的外掛程式更新。觀察...