Time of Update: 2018-12-05
Ogre 如何渲染簡單的幾何物體使用ManualObject或者其衍生類別渲染簡單的幾何物體, 步驟如下: 1. 新建立一個ManualObject對象 mManualObj = new Ogre::ManualObject("SimpleStuff2"); 2. 設定該ManualObject的參數 1) 設定其渲染序列組
Time of Update: 2018-12-05
MVC體繫結構模式將一個互動式系統分為三個組件。模型包含核心功能和資料。視圖向使用者顯示資訊。控制器處理使用者輸入。視圖和控制器共同構成了使用者介面。變更傳播機制保證了使用者介面和模型之間的一致性。其實,訂閱者模式也可以有此保證。1. 例子一個簡單的政治選舉系統。2. 語境具有靈活的人機介面的互動式系統。3. 問題功能和資料保持穩定,但是使用者介面經常發生更改。1) 相同的資訊在不同的視窗有不同的顯示。2) 即時性,對資料的操作要能夠即時的反映到各個顯示。3)
Time of Update: 2018-12-05
最近需要在研究水實現,在用戶端中加入了水來測試,簡單的實現水的折射、反射。備忘:在OGRE1.7的例子Demo_Fresnel中已有展示。關鍵詞:RTT
Time of Update: 2018-12-05
1、時間複雜度(1)時間頻度 一個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機運行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且一個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數多,它花費時間就多。一個演算法中的語句執行次數稱為語句頻度或時間頻度。記為T(n)。(2)時間複雜度
Time of Update: 2018-12-05
折騰了好久,終於可以開始正式項目開發了。之前的這段日子,我們陷落在公司的股權分配問題中,糾結於到底需要幾個人到位才啟動;更是反覆討論,到底應該做個怎樣的遊戲。林林總總,終於,在已經到位的幾位同學的摩拳擦掌中,叮噹決定自己挂帥開始幹了。就這麼不到十個人,空曠的辦公室,跟我們起先想像的情況不太一樣。尤其是主策劃還沒有落定。我說,叮噹,你好歹也是一資深遊戲玩家,帶了這麼多年的遊戲部,跟了這麼多成功的項目,沒吃過豬肉總見過豬跑吧,我就不相信你乾著會比別人差。若不是我必須盯著程式實現這塊,我都想自己做主策
Time of Update: 2018-12-05
這是一個完全基於js的應用程式,區別於一般的web應用,它是oaop。大概需要一些什麼樣的工作呢?大概的概念:1、容器 是的,需要容器。容器的兩個目的:布局和管理組件。組件之間的相互連信以及影響都需要容器來協調。管理組件之間的狀態,組件需要向容器進行註冊。對組件傳播過來的事件,容器需要做出處理,調用相關其他組件的方法或者忽略或者繼續向上一級容器傳播。2、組件 組件的目的是完全屏蔽對dom編程的依賴,同時屏蔽底層的瀏覽器事件,例如按一下滑鼠、雙擊等等,對這些事件進行完全的封裝。組件有著自己的生命週
Time of Update: 2018-12-05
現在看到CSDN的Delphi中有許多人在問一些比較基礎的問題,不禁有點感慨,不是在取笑他們提出的問題過於基礎,而是讓我回想起自己學Delphi時的一些事,雖然自己並非Delphi中的高手,但總有那麼一些經驗。記得那時學習Delphi的原因是感到用VB6有點力不從心了,VB6既然是微軟的東西,竟不支援所有的API~!感到有點笑話。後經人介紹,開始學習Delphi,從D7開始學,買了本飛思的Delphi書來看,後悔了...
Time of Update: 2018-12-05
忙活了一段時間,終於在資料資料驢唇不對馬嘴,匯出外掛程式嚴重不靠譜,參考資料不僅數量少而且品質也不高的基礎上,完成了讀取動作捕捉裝置擷取的bvh資料並驅動Maya匯出模型,最終在OGRE中實現了骨骼動畫。表面看起來實現OGRE骨骼動畫很簡單,就是將bvh中各關節的資料賦給OGRE骨骼動畫。實際實現的時候會發現有很多細節的問題需要注意,如bvh關節怎樣和模型的關節對應起來,如果bvh有22個關節,而模型有18個關節或25個關節咋辦?bvh中各個關節具有統一的座標系,動作資料(MOTION部分)中每
Time of Update: 2018-12-05
(1)主程式介面採用SampleBrowser包含檔案為FileSystemLayerImpl.h,FileSystemLayerImpl.cpp,SampleBrowser.h和SampleBrowser.cpp共四個檔案。建立項目的時候選擇Windows應用程式。(2)運行程式根據Ogre內建例子修改,建立的時候選擇DLL。代碼如下:MotionView.h#ifndef __MotionViewer_H__#define __MotionViewer_H__#include
Time of Update: 2018-12-05
1.指向const對象的指標const int *p;這個p是一個指向int類型const對象的指標,const限定了指標p所指向的類型,而並非p本身。也就是說p本身並不是const。在定義時不需要對它進行初始化,還可以給p重新賦值,使其指向另一個const對象。但不能通過p修改所指向對象的值。樣本1:int a=0; p=&a; 可以。樣本2:*p=20;
Time of Update: 2018-12-05
官網上有教程,只是拷貝代碼時格式混亂,還得自己調整,故講自己調整好的儲存一下。void createColourCube() { /// Create the mesh via the MeshManager Ogre::MeshPtr msh = MeshManager::getSingleton().createManual("ColourCube", "General"); /// Create one submesh SubMesh* sub =
Time of Update: 2018-12-05
左手座標系下,一點繞任意軸旋轉θ角的右乘矩陣:其中C為cosθ,S為sinθ,A為單位化的旋轉軸以下推導均為左手座標 首先我們將P看成從原點出發的自由向量,將其分解為平行於軸A與垂直於軸A的分量A1,A2的形式: (公式1)2:圖2 (公式2)
Time of Update: 2018-12-05
最近希望將MeshLab的ply模型轉化為Ogre的mesh模型,最初的思路是:(1)在MeshLab中將ply模型轉化為Maya支援的obj模型;(2)利用外掛程式,在Maya中將obj模型匯出為mesh模型。上述思路是可行的,但匯出後發現雖然面片數目沒變,但頂點數目增加了很多。由於精確控制到每個頂點,故這樣的匯出是沒有價值的。經過再三考慮,我決定自己寫一個小程式,能將ply直接轉化為mesh。我首先實現的是將只有頂點(vertex)和索引(index)的ply資料匯出為mesh模型。代碼如下
Time of Update: 2018-12-05
首先,我要感謝萊昂哈德·歐拉先生,他的智慧之光打破了時間的界限,在200多年後的今天依然照耀著我們. 許多圖形學教科書在談論2D旋轉的時候,用一個表示旋轉的矩陣來講解旋轉,例如:這是一個表示旋轉的矩陣,我們將一個2D向量乘以這個矩陣, 就能得到旋轉θ角度的向量.旋轉後的向量x', y'就等於: 我從來沒有真正明白,這個旋轉矩陣是怎麼計算得來的, 直到我找到歐拉的公式:圖中的圓表示”複數(complexnumber)平面”上的單位向量的集合.這個公式被稱作”歐拉公式”,i表示複數, e是自然對數,
Time of Update: 2018-12-05
今天程式終於調試成功,記錄一下實現的過程。(一)首先就是眼睛模型的提取。完整的頭部模型用ply檔案表示,用MeshLab讀取後,顯示頂點數為6292,面片數為12280:在ply檔案中有眼睛頂點和面的參數資訊,可以通過一個小程式來單獨提取。為了後面頂點變換的方便,我把除眼睛外的頂點用“0 0 0”代替,並將其寫入新的ply檔案。在我的例子中,眼睛的頂點在5832-6173。/* * File: PlyProcess.cpp * Author: zhuxiaoyang
Time of Update: 2018-12-05
準備工作:1.寫一個能正確啟動並執行OGRE程式,越簡單越好。我採用的是BaseApplication。2.下載FMOD聲音引擎並安裝,下載版本為FMOD Ex Programmers API,當前穩定版為4.38.01。3.下載官網上講OGRE和FMOD相結合的SoundManager例子。4.給程式添加相應的檔案,在FMOD安裝路徑下,如D:\Program Files\FMOD SoundSystem\FMOD Programmers API
Time of Update: 2018-12-05
在前一篇文章中,介紹了將ply檔案的頂點和紋理資料轉化成mesh檔案的方法,但還沒有紋理資料,這篇文章給出的是添加紋理的方法。代碼如下:/* * File: CxMesh.h * Author: zhuxiaoyang (cgnerds@gmail.com) * * Created on Aug 5th, 2011, PM 3:00 */#ifndef __CxMesh_H__#define __CxMesh_H__#include <Ogre.h>#include
Time of Update: 2018-12-05
一開始學的就是Struts1.x和Struts2兩個架構,所以一直對Servlet的一些東西沒去深入瞭解。最近由於要幫朋友寫一個網站,涉及的東西挺多,所以也借這次機會,一邊做項目,一邊將Servlet再好好看看。太理論的東西說不上,直接上代碼。(如果哪裡有錯,請高手指出,謝謝!) 一、各監聽器順序1、Web應用伺服器啟動 ServletContextAttributeListener —— attributeAdded ServletContextListener ——
Time of Update: 2018-12-05
Ogre 1.7引入了SampleBrowser,可以瀏覽30多個例子,無需單個編譯單個瀏覽,可以說是一大進步。但通常我們建立的應用程式只有一個例子,不需要使用SampleBrowser;而且帶有SampleBrowser的程式結構比較混亂,其實也是沒有必要的。而如果採用Ogre
Time of Update: 2018-12-05
Struts2.x項目中文亂碼,需要注意的幾處1、頁面2、設定檔struts.xml3、過濾器4、伺服器(這裡指定的是TomCat)5、資料庫比如統一使用GBK一、JSP頁面 一般JSP頁面亂碼,需要注意該句(註:原來這裡寫的感覺不夠準確,2011-1-26修改) <%@ page language="java" contentType="text/html; charset=GBK"%> //一般下邊的兩項可以不用寫