• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            AstaTus
            -- 夏天不熱。。
            posts - 22,comments - 12,trackbacks - 0
            火炬之光是用Ogre開發(fā)的一款單機(jī)游戲,所以他的資源是可以再度利用的.但是在加載模型時他的動畫信息沒有導(dǎo)入進(jìn)來,所以要將他的Skeleton文件動下手腳,以火炬之光中 Model/Goust為例,先將Goust.Skeleton文件拖放到OgreXmlConverter.exe工具圖標(biāo)上,然后就會在Goust.Skeleton目錄上生成一個Goust.Skeleton.XML文件,該在中間插入<animationlinks>標(biāo)記,然后將所有的動畫Skeleton文件Link進(jìn)來.然后將xml文件拖到OgreXmlConverter.exe工具圖標(biāo)上,便自動又生成一個oust.Skeleton,該文件內(nèi)就會link動畫文件了

            <skeleton> <bones> </bones> <bonehierarchy> </bonehierarchy> <animations> </animations> <animationlinks> </animationlinks> </skeleton

            <animationlinks> <animationlink skeletonName="Attack1.SKELETON" scale="1" /> <animationlink skeletonName="Attack2.SKELETON" scale="1" /> <animationlink skeletonName="Die.SKELETON" scale="1" /> <animationlink skeletonName="Idle.SKELETON" scale="1" /> <animationlink skeletonName="Run.SKELETON" scale="1" /> <animationlink skeletonName="spawn.SKELETON" scale="1" /> <animationlink skeletonName="special_teleport.SKELETON" scale="1" /> <animationlink skeletonName="Special_Gen_AOE.SKELETON" scale="1" /> <animationlink skeletonName="Walk.SKELETON" scale="1" /> <animationlink skeletonName="Special_summon.SKELETON" scale="1" /> </animationlinks>
            posted @ 2010-04-11 22:41 AstaTus 閱讀(1793) | 評論 (0)編輯 收藏
               一個聲源與多個緩沖綁定時,這幾個緩沖中的聲音Format需要一致,否則
            alSourceQueueBuffers函數(shù)會得到 0xA004的錯誤,然后在Sourceplay時聲源狀
            態(tài)不會改變?yōu)锳L_PLAYING而一直都會在AL_INITAL的狀態(tài)
              
            posted @ 2009-09-20 11:17 AstaTus 閱讀(329) | 評論 (0)編輯 收藏
            問題背景:
                     很早就覺得數(shù)學(xué)很重要,但斌沒有靜下心來好好看~ 最近重寫都D3D框架的結(jié)構(gòu),打算從基礎(chǔ)類一個個寫起。。
               今天寫到射線的相交,在射線與平面相交的判斷上,由于射線的的單方向性,所以可能存在射線的反向延長線和平
               面相交,但是正真的射線沒  有  和平面相交,所以設(shè):
                  平面的單位法向量:N,;
                  射線的起始點:Origin
                  射線的方向:Dir

                  如果Dir,N的點積為正 且Origin在平面的背面,或Origin在平面的正面,且Dir,N的點積為負(fù),則他們相交
                  其他情況則不想交
                  但關(guān)鍵是Origin在平面的哪一面該怎么算呢?下面來小證一下

            證明:
                  N,Origin,Dir均為矢量,其他為標(biāo)量
              平面方程為 N(x, y, z) = D;
                  射線方程為 P(t) = Origin + Dir*t;

                  N為平面的單位法向量,  
                  求N與Origin的點積
                  N•Origin = |N| * |Origin|cosF
                  因為N為單位向量 則求出來的值為Origin向量在N上的投影且有方向
                  (這個有向長度相于當(dāng)該平面經(jīng)過原點時的有向長度,既D為0時),(D的幾何意義是平面到原點的有向距離,
                   既D為負(fù)則 原點在平面背面,反之在反面)
                  所以N•Origin + D為最后Origin在正真的有偏移的N上的投影的有向長度,為負(fù)則在背
                  面,為正則在正面
                  貌似講的不怎么清楚 -_- ~~~
            posted @ 2009-02-25 21:01 AstaTus 閱讀(556) | 評論 (0)編輯 收藏
               前些日子 乘著有閑功夫,慢慢的hlsl看了起來,發(fā)現(xiàn)以前學(xué)的數(shù)學(xué)知識全用上了,只可惜忘得都差不多了,又要惡補(bǔ)數(shù)學(xué)了。
               做了個比較簡單的 phong 光照模型。
               
            float4x4 Scal;
            float4x4 World;
            float4x4 View;
            float4x4 projection;
            float4x4 WorldViewProjection;
            float3 EyePosition;
            float3 LightDir;
            float4 LightColor;

            struct VertexInput
            {
                float4  Position : POSITION;
                float2  Tex : TEXCOORD0;
                float3  Normal : NORMAL;
            }
            ;


            struct VertexOutput
            {
                float4  Position : POSITION;
                float2    Tex    : TEXCOORD0;
                float3    Normal : TEXCOORD1;
                float3  View     : TEXCOORD2;        
            }
            ;


            VertexOutput VertexMain(VertexInput input)
            {
                VertexOutput output 
            = (VertexOutput)0;
                
                 WorldViewProjection 
            = mul(mul(View, World), projection);
                 
                 output.Position 
            = mul(mul(input.Position, Scal), WorldViewProjection);
                 output.Tex 
            = input.Tex;
                 output.Normal 
            = mul(input.Normal, World);
                 output.View  
            = EyePosition - mul(input.Position,  World);
                 
                 
            return output;
            }


            float4 PixelMain(VertexOutput input) : COLOR0
            {
                
            float diffsum;
                
            float specularsum;
                float4 color;
                
            float sunshinepower;
                float4 amibent 
            = float4(0.1f0.1f0.1f1.0f);
                sunshinepower 
            = 16.0f;
                
                diffsum 
            = specularsum = 0;
                
                
            //漫反射
                LightDir = normalize(LightDir);
                diffsum 
            = saturate(dot(LightDir, input.Normal));
                
                
            //鏡面反射
                float3 L = -LightDir;
                float3 R 
            = normalize(reflect(L, input.Normal));
                float3 V 
            = normalize(input.View);
                
                specularsum 
            = pow(saturate(dot(R, V)), sunshinepower);
                
                color 
            = specularsum + diffsum * LightColor + amibent;

                
                
            return color;
            }


            technique techR 
            {
                pass p0
                
            {
                    VertexShader 
            = compile vs_2_0 VertexMain();
                    PixelShader 
            = compile ps_2_0 PixelMain();
                }

            }

            posted @ 2009-02-16 10:10 AstaTus 閱讀(2727) | 評論 (2)編輯 收藏
                  終于把無限地形調(diào)試好了,但紋理部分還沒做。那個惱人的BUG總是把機(jī)器搞成藍(lán)屏,微軟的東西用起來就是不放心啊。-_-
                  下一步要做鼠標(biāo)拾取,但發(fā)現(xiàn)擴(kuò)展比較亂,打算重構(gòu)下,具體思路是:
                  1.把四叉樹拿出來單獨(dú)做成一個類,節(jié)點是node,只標(biāo)管理坐標(biāo)等方位屬性,然后再用entity類attach上去,貌似現(xiàn)在大多數(shù)引擎都是這樣做的。
                  2.node用composite 模式 可以自己create節(jié)點 四叉樹的那個類就是把node 和entity封裝成樹,以后如果有其他的場景管理模式就不需要改動node和entity類了
                  暫且只想了這些,具體細(xì)節(jié)還有很多的考慮,只能慢慢來了
                  .打算以后在編輯器里將場景直接導(dǎo)出成一個文件,然后在游戲里導(dǎo)入文件就行了~
                  額,貌似還有很多事情~
                  紋理沒做 樣子比較難看 不貼圖了。
            posted @ 2009-02-16 09:59 AstaTus 閱讀(782) | 評論 (2)編輯 收藏

                整合成功已將近1個星期了,但并不是很開心。因為先前的那個LOD效率太低  潘永亮的pdf里說他有100~200+的幀率,而我的只是在30上下徘徊而且還是512 * 512的高度圖,他說他的是1024* 1024的 ,所以無比的郁悶+ 仇視~后來感覺算法的瓶頸可能是在到最后分的節(jié)點太細(xì)了,導(dǎo)致在渲染時 渲染隊列里的節(jié)點過多,(我的筆記cpu是1.66G的,雖然雙核,但單線程的程序最多也不會超過1.8G吧)后來看到ogre里的terrain的那里例子里,LOD變化時是一大塊一大塊的,一個節(jié)點代表一大塊的mesh ,后來看了下是65*65的網(wǎng)格 而我的最細(xì)只有3*3.  -.-!
                所以這些日子都在弄那個地形 ,看到tonykee boss的博客里的那個無限地形非常的HAPPY,所以依據(jù)他的思路在寫,后來發(fā)現(xiàn)這個地形代碼非常的龐大,但可以想象,用起來將是非常的爽啊,因為tonykee boss只給了個大概的思路,細(xì)節(jié)方面有很多要考慮的,尤其是效率方面的(不知道是不是以前寫過單片機(jī)的程序的原因,時間和空間的開銷我都過分的關(guān)注-。-),所以導(dǎo)致已將近寫了1個星期,不過還差點,快的話明天估計可以展開全面的調(diào)試了。。。
               明天年三十,希望能1次調(diào)試成功~~

             

            posted @ 2009-01-24 22:18 AstaTus 閱讀(953) | 評論 (1)編輯 收藏
             參考了潘永亮的lod的資料后,終于將LOD給實現(xiàn)了
                  LOD地形的實現(xiàn)面臨有2個問題
                  1:網(wǎng)格的裂縫問題,我是用取消那條與低分辨塊相鄰的邊來做的,這樣的話有個缺點既每相鄰的塊分辨率做多只能相差1;
                  2:生成網(wǎng)格時的遍歷次數(shù),用潘永亮的方法只需遍歷一次
                  具體參見潘永亮的PDF:
                        /Files/AstaTus/largeLOD.pdf
                    我的效果圖:
                           
            posted @ 2008-12-25 22:54 AstaTus 閱讀(435) | 評論 (0)編輯 收藏
               DX學(xué)習(xí)中總是在一些小問題上糾纏不清,所以特開一篇,記錄下自己的錯誤。

            1, 內(nèi)存訪問異常:
                     遇到該問題時,可能錯誤并非在報錯的那個語句上,而是在前面的運(yùn)行語句中,數(shù)組越界訪問,或其他關(guān)于內(nèi)存的錯誤。
                     我就是在用vector時 越界訪問了(雖然vector可以自動開辟空間,但[]運(yùn)算符貌似不能訪問當(dāng)前所占有的內(nèi)存之后的內(nèi)存,
                     我是先resiz   e的,   這  樣可以提高效率) 導(dǎo)致后面createtexturefromfile的函數(shù)無法創(chuàng)建紋理 。

            2.      創(chuàng)建的實體渲染后不顯示
                     這個問題至今遇到了2次,都是因為變量的類型原因
                     (1).索引的類型默認(rèn)是WORD類型,但是在創(chuàng)建Indexbuffer時可以將索引的類型設(shè)置為DWORD。
                     (2).自定義的頂點格式的xyz必定需要float型

            3.      換了個dx的SDK(June 2008) 發(fā)現(xiàn)原來的shader代碼出了點問題,在用到全局變量的代碼處報
                     global variables are implicitly constant, enable compatibility mode to allow modification 錯誤
                     也就是說全局變量是extern也是常量,在shader里面不能修改,但可以從宿主程序里改。
            posted @ 2008-12-22 13:06 AstaTus 閱讀(314) | 評論 (0)編輯 收藏
                 好久沒寫了,前些日子去搞文件系統(tǒng)了,是單片機(jī)的文件系統(tǒng),完全不能調(diào)試,累啊,現(xiàn)在用起2005 那一個爽字了得。。哈哈


            現(xiàn)在已經(jīng)完成相機(jī),地形,框架三個類了,不過功能還不是很完善,還需待改進(jìn)。。




            貼張圖
            posted @ 2008-11-17 22:21 AstaTus 閱讀(603) | 評論 (2)編輯 收藏
            /////pixel shader:
            sampler BaseTex;
            sampler SpotLightTex;
            sampler StringTex;



            struct PS_INPUT
            {    
                float2 
            base : TEXCOORD0;
                float2 spotlight : TEXCOORD1;
                float2 text : TEXCOORD2;    
            }
            ;

            struct PS_OUTPUT
            {
                vector finalcolor : COLOR;
                
            }
            ;

            PS_OUTPUT Main(PS_INPUT input)
            {
                PS_OUTPUT  output 
            = (PS_OUTPUT)0;
                
                vector b 
            = tex2D(BaseTex, input.base);
                vector s 
            = tex2D(SpotLightTex, input.spotlight);
                vector t 
            = tex2D(StringTex, input.text);

                vector c 
            = b * s + t;
                c 
            += 0.1f;

                output.finalcolor 
            = c;


                
            return output;
            }



            ///////////////////////主程序
            //..

            BT 
            = PSConstantTable->GetConstantByName(0"BaseTex");
                    ST 
            = PSConstantTable->GetConstantByName(0"SpotLightTex");
                    TT 
            = PSConstantTable->GetConstantByName(0"StringTex");
            //..

            BT, ST, TT 為D3DXHANDLE類型,調(diào)試到這里時
            這三個都為錯誤指針,PSConstantTable為獲取正常的靜態(tài)數(shù)據(jù)表指針,pixel shader編譯也沒問題,到底是哪里錯了,抓狂。。
            為什么編譯沒出錯,獲取靜態(tài)數(shù)據(jù)表也沒出錯,就是在獲取著色器里的sampler句柄時出錯。。。謎團(tuán)至今未解。。

            posted @ 2008-10-16 22:39 AstaTus 閱讀(328) | 評論 (0)編輯 收藏
            僅列出標(biāo)題  下一頁
            色欲久久久天天天综合网精品| 久久久精品2019免费观看| 色婷婷综合久久久久中文字幕| 久久99精品久久久久久野外| 日韩久久无码免费毛片软件| 欧美精品国产综合久久| 久久99精品久久久久久久久久| 久久精品免费网站网| 久久久久无码精品国产不卡| 久久精品免费网站网| 国产精品美女久久久久| 久久天天躁狠狠躁夜夜2020一| 中文字幕亚洲综合久久菠萝蜜| 久久精品国产亚洲AV麻豆网站| 久久激情五月丁香伊人| 国产欧美一区二区久久| 亚洲色欲久久久综合网| 婷婷久久综合九色综合绿巨人| 7777久久亚洲中文字幕| 综合人妻久久一区二区精品| 久久99热这里只有精品国产 | 久久国产精品成人片免费| 内射无码专区久久亚洲| 女人香蕉久久**毛片精品| 日日噜噜夜夜狠狠久久丁香五月| 一级女性全黄久久生活片免费| 国产成人久久精品麻豆一区| 91精品国产综合久久精品| 麻豆亚洲AV永久无码精品久久| 久久这里只有精品首页| 香蕉久久夜色精品国产尤物| 性欧美大战久久久久久久 | 久久国产免费直播| 亚洲精品tv久久久久久久久久| 久久精品成人| 亚洲国产成人精品91久久久 | 国产精品久久免费| 国产99久久精品一区二区| 久久亚洲日韩精品一区二区三区| 亚洲欧美伊人久久综合一区二区 | 久久se精品一区精品二区国产|