• <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>

            麒麟子

            ~~

            導(dǎo)航

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            統(tǒng)計(jì)

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            Friends

            WebSites

            積分與排名

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            #

            魔獸世界客戶端數(shù)據(jù)研究(一)

            終于決定,還是通過wow model viewer起手,研究一下WOW的數(shù)據(jù)類型,從另一個(gè)角度,體驗(yàn)一把這個(gè)唯一讓我充過值的游戲。

            這將是一系列隨筆,即在讀代碼的時(shí)候,順便記錄,以理清思路和加深映象。 其中會(huì)有很多讓人費(fèi)解的地方,如果有幸被某位兄弟看見,請勿見笑。

            我們從讀取模型數(shù)據(jù)開始。。。
            下面是這是頂點(diǎn)結(jié)構(gòu)體 這是wow model viewer中的定義
            struct ModelVertex
            {
                Vec3D pos; //頂點(diǎn)位置
                uint8 weights[4];//骨骼權(quán)重
                uint8 bones[4];//受影響的骨骼索引
                Vec3D normal;//法線
                Vec2D texcoords;//紋理坐標(biāo),只有一層
                int unk1, unk2; // 總是0,0  可能沒有被使用到
            };

            讀完頂點(diǎn)數(shù)據(jù)后,我們需要對坐標(biāo)系做一點(diǎn)修正,因?yàn)閃OW用的是Z軸向上, Y軸向里(依稀記得torque也是這樣子)
            很多人用得不是太習(xí)慣
            若要轉(zhuǎn)換為GL中的坐標(biāo)(Z向外),則 pos = vec3D(pos.x,pos.z,-pos.y);
            若要轉(zhuǎn)換為D3D中的坐標(biāo)(Z向里),則pos = vec3D(pos.x,pos.z,pos.y);
            法線轉(zhuǎn)換方式和坐標(biāo)一樣

            轉(zhuǎn)換為了我們想要的坐標(biāo)數(shù)據(jù)以后。我們還要強(qiáng)制對法線進(jìn)行單位化。在這里,為了對法線進(jìn)行壓縮,其實(shí)我們可以僅存儲(chǔ)X,Y分量就可以了。
            不知WOW為什么沒有這樣子。

            同時(shí),在進(jìn)行模型頂點(diǎn)數(shù)據(jù)讀取的時(shí)候,由于我們本來就要進(jìn)行頂點(diǎn)數(shù)據(jù)遍歷,所以我們可以順便得出這個(gè)模型的半徑,用來做球形檢測

            模型數(shù)據(jù)讀完了,緊接著是BoundingMesh(想說是包圍網(wǎng)格,又不太對,又或者,叫碰撞網(wǎng)格,這是一個(gè)簡化的網(wǎng)格,用于碰撞檢測和拾取之類的)數(shù)據(jù)
            它由兩個(gè)部分組成BoundingVertices & BoundingTriangles (我又詞窮了,都懂的。)
            BoundingVertices由一串float3組成,順序讀取即可,讀取完了后,如果上面的MESH做了坐標(biāo)系統(tǒng)轉(zhuǎn)換,那這里也得做。
            BoundingTriangles由一串uint16索引組成,順序讀取即可。

            讀取完上面的模型數(shù)據(jù)后,接下來就是紋理數(shù)據(jù)。
            在WMV中的定義如下

            #define    TEXTURE_MAX    32  //最大紋理數(shù)
            struct ModelTextureDef
            {
                uint32 type;  //紋理類型
                uint32 flags; //紋理標(biāo)記
                uint32 nameLen; //名字長度
                uint32 nameOfs; //名字在DBC中的偏移
            };

            搞笑得很啊,在結(jié)構(gòu)體定義的時(shí)候,沒有對上面字段說明,在使用的地方,卻有一段描述。不過想想也是,用的時(shí)候方便查看嘛。
            /*
            Texture Types
            Texture type is 0 for regular textures, nonzero for skinned textures (filename not referenced in the M2 file!)
            For instance, in the NightElfFemale model, her eye glow is a type 0 texture and has a file name,
            the other 3 textures have types of 1, 2 and 6. The texture filenames for these come from client database files:

            DBFilesClient\CharSections.dbc
            DBFilesClient\CreatureDisplayInfo.dbc
            DBFilesClient\ItemDisplayInfo.dbc
            (possibly more)
            0     Texture given in filename
            1     Body + clothes   身體和布料
            2    Cape 肩膀
            6    Hair, beard 頭發(fā),胡子
            8    Tauren fur 牛頭人的皮毛
            11    Skin for creatures #1
            12    Skin for creatures #2
            13    Skin for creatures #3

            Texture Flags
            Value     Meaning
            1    Texture wrap X X方向環(huán)繞
            2    Texture wrap Y Y方向環(huán)繞
            */

            下面是我對這段說明的理解
            0 表示是普通紋理 并且,可以直接獲取它的紋理名字
            非0表示是皮膚 值得說明的是,紋理名字不包含在M2文件中。
            比如說,在暗夜男模型中,他的眼睛發(fā)光就是一個(gè)類型為0的紋理,并且,有一個(gè)文件名(這個(gè)文件名就存在本文件中)。其它3個(gè)紋理類型是1,2和6. 紋理名字是從客戶端數(shù)據(jù)庫文件中提取。nameOfs就是表示其位置

            額,寫到這里的時(shí)候,突然發(fā)現(xiàn),其實(shí)是有宏定義的

            /*
            Texture Types
            Texture type is 0 for regular textures, nonzero for skinned textures (filename not referenced in the M2 file!) For instance, in the NightElfFemale model, her eye glow is a type 0 texture and has a file name, the other 3 textures have types of 1, 2 and 6. The texture filenames for these come from client database files:
            DBFilesClient\CharSections.dbc
            DBFilesClient\CreatureDisplayInfo.dbc
            DBFilesClient\ItemDisplayInfo.dbc
            (possibly more)
            */
            enum TextureTypes
            {
                TEXTURE_FILENAME=0,            // Texture given in filename
                TEXTURE_BODY,                // Body + clothes
                TEXTURE_CAPE,                // Item, Capes ("Item\ObjectComponents\Cape\*.blp")
                TEXTURE_ITEM=TEXTURE_CAPE,
                TEXTURE_ARMORREFLECT,        //
                TEXTURE_HAIR=6,                // Hair, bear
                TEXTURE_FUR=8,                // Tauren fur
                TEXTURE_INVENTORY_ART1,        // Used on inventory art M2s (1): inventoryartgeometry.m2 and inventoryartgeometryold.m2
                TEXTURE_QUILL,                // Only used in quillboarpinata.m2. I can't even find something referencing that file. Oo Is it used?
                TEXTURE_GAMEOBJECT1,        // Skin for creatures or gameobjects #1
                TEXTURE_GAMEOBJECT2,        // Skin for creatures or gameobjects #2
                TEXTURE_GAMEOBJECT3,        // Skin for creatures or gameobjects #3
                TEXTURE_INVENTORY_ART2,        // Used on inventory art M2s (2): ui-buffon.m2 and forcedbackpackitem.m2 (LUA::Model:ReplaceIconTexture("texture"))
                TEXTURE_15,                    // Patch 12857, Unknown
                TEXTURE_16,                    //
                TEXTURE_17,                    //
            };

            enum TextureFlags
            {
                TEXTURE_WRAPX=1,
                TEXTURE_WRAPY
            };

            總之,就是如果遇上是0號類型,則直接讀文件名,否則就去DBC中取公共紋理數(shù)據(jù)。
            比如頭發(fā)什么的,而上面牛頭人的毛發(fā)單獨(dú)定義,可能是因?yàn)槊l(fā)和一般人型生物不一樣吧。
            另外,從TEXTURE_ARMORREFLECT中可以看出,WOW中的武器和盔甲是加上了反射紋理的,這樣才看起來有高光的感覺。

            ------------------------------------------------------------------------
            ------------------------------------------------------------------------
            讀完模型,碰撞網(wǎng)格,紋理數(shù)據(jù),接下來,就要讀取掛接物了,最常見的掛接物,就是WOW中的肩膀,頭盔或者武器上的一些粒子效果。

            WMV中,掛接物的定義如下
            /*
            * This block specifies a bunch of locations on the body - hands, shoulders, head, back,
            * knees etc. It is used to put items on a character. This seems very likely as this block
            * also contains positions for sheathed weapons, a shield, etc.
            */
            struct ModelAttachmentDef
            {
                uint32 id; // Just an id. Is referenced in the enum POSITION_SLOTS.
                uint32 bone; // Somewhere it has to be attached.
                Vec3D pos; // Relative to that bone of course.
                AnimationBlock unk; // (Int32) Its an integer in the data. It has been 1 on all models I saw. Whatever.
            };

            無非就是定義了掛接的骨骼索引,偏移位置等。  最后一個(gè)參數(shù),是動(dòng)畫塊數(shù)據(jù)。定義如下

            // sub-block in block E - animation data, size 28 bytes, WotLK 20 bytes
            struct AnimationBlock
            {
                int16 type;        // 插值類型 (0=none, 1=linear, 2=hermite)
                int16 seq;        // 全局隊(duì)列ID,-1表示無

                //下面的就是數(shù)據(jù)個(gè)數(shù)+數(shù)據(jù)在緩沖區(qū)中的偏移
                #ifndef WotLK
                uint32 nRanges;
                uint32 ofsRanges;
                #endif
                uint32 nTimes;  //
                uint32 ofsTimes;
                uint32 nKeys;
                uint32 ofsKeys;
            };

            上面的定義可以看中,WLK版本中,BLZ對文件進(jìn)行了改動(dòng),加入了一個(gè)范圍數(shù)據(jù)。

            讀取完上面的掛接頭信息以后,就可以根據(jù)這個(gè)信息,實(shí)例化一個(gè)掛接物,添加到模型身上。

            下面是一個(gè)模型掛接物的信息
            struct ModelAttachment
            {
                int id;  //ID
                Vec3D pos; 位置
                int bone; //撞接的骨骼
                Model *model; //掛接的模型

                void init(MPQFile &f, ModelAttachmentDef &mad, uint32 *global);
                void setup();
                void setupParticle();
            };

            讀完上面的信息后,我發(fā)現(xiàn),還有一個(gè)詭異的attLookup數(shù)據(jù), 單看字面上意思,應(yīng)該是拿來裝一個(gè)供掛接物ID查詢的數(shù)據(jù)的。
            就是ModelAttachment中的ID作為下標(biāo),進(jìn)行查詢。 目前還沒有搞明白。
            本來想繼續(xù)寫下去,但發(fā)現(xiàn)寸步難行了,后面的數(shù)據(jù)都沒看明白是什么意思,只好留到下次了。
            睡覺了,晚安!?。。。?/p>

            posted @ 2013-04-20 00:53 麒麟子 閱讀(819) | 評論 (0)編輯 收藏

            一路風(fēng)雨走過來:那些我親密接觸過的項(xiàng)目

            一時(shí)間,又不知道說什么了。 貼幾張這一路走來,和我有關(guān)的項(xiàng)目截圖吧。  時(shí)間是由新到舊

             

            目前在正研發(fā)中的項(xiàng)目 《帝國來了》

            http://v.ku6.com/show/1zMrlsOx0nwpQw3JMoNAjw...html

            image

            image

             

            繼爹媽總動(dòng)員之后的第二個(gè)產(chǎn)品 《大話修仙》 (天地劫WEB)

            http://xx.sjgame.cn/

            image

            image

             

            處女作 《爹媽總動(dòng)員》 哎,第一次,給了它。

            http://www.87kd.com/game/dmzdy/

             

            公司讓我們學(xué)習(xí)實(shí)戰(zhàn)經(jīng)驗(yàn),臨時(shí)參與了兩個(gè)月的《五虎上將》

            http://whsj.sjgame.cn/

             

            第一個(gè)FALSH技術(shù)DEMO KINGDOM RUSH

            http://www.shnenglu.com/Leaf/archive/2013/02/22/198012.html

            image

             

            HALO 3D引擎DEMO演示

            http://www.shnenglu.com/Leaf/archive/2013/02/22/198011.html

            wps_clip_image-26198

             

            2部的《天地劫》

            http://tdj.sjgame.cn/main.html

             

            在游戲開發(fā)的道路上,我想我依然會(huì)繼續(xù)努力、奮斗。 生生不息,不離不棄。。。。

            posted @ 2013-04-11 01:51 麒麟子 閱讀(1973) | 評論 (2)編輯 收藏

            irrlicht引擎:為什么我會(huì)想著搗鼓這貨

            其實(shí)我也在問自己,為什么整來整去,又搗鼓起這個(gè)東西了。

            首先,irrlicht的商業(yè)性是很淺的,如果要想應(yīng)用于商業(yè)化,不下一翻功夫是不行的。 比起現(xiàn)在滿天飛舞的UINTY3D,就更不用說了。就算和OGRE比,也因?yàn)镮RRLICHT沒有提供太多花哨的特性,而導(dǎo)致這么多年來ARPU值一直沒有OGRE高,玩家流失率是巨大的。

            Niko自己整的SupperCuber.就更不用說了,我自己下載來弄了一下,也沒見得有多好使,反正沒有官方介紹得那么牛B。

             

            在重新定位自己要深入挖掘的引擎之前,也曾再一次被OGRE吸引過。 原因有很多種,

            一是天龍代碼的泄漏,里面有很多OGRE模型,可以直接加載,構(gòu)建場景。很快速地獲得像模像樣的成就感。

            二是,OGRE本身的DEMO就提供了大量的SHADER,不用自己再辛辛苦苦地去東拼西找了。

            三是,本來與一個(gè)朋友相約用OGRE整RTS的, 因?yàn)槟壳肮镜捻?xiàng)目是RTS,所以一時(shí)間,對RTS興趣大增, 看了0 A.D. GLEST等代碼。 也明白了RTS中,工具與AI,遠(yuǎn)遠(yuǎn)大過于畫面顯示。 所以,使用OGRE,有現(xiàn)成的OgreCrowd等可以使用。 不用再為動(dòng)態(tài)尋路找麻煩。

            四是,OGRE的招聘和成熟的案例遠(yuǎn)遠(yuǎn)大于irrlicht. 光是我知道的 天龍八部,成吉思汗,獨(dú)孤求敗,極光世界,火炬之光等,就足夠說明它的威力。

            五是,OGRE官方支持WIN8,ADDROID,IOS。。

            原因太多了,這是一篇講irrlicht的文章,老是夸OGRE是不道德的。

             

            下面,我來說說我的原因,也供和我一樣糾結(jié)的朋友作一個(gè)參考。

            一、我時(shí)間有限,雖然之前看過OGRE的代碼,但是對OGRE還是不敢說有掌握, 如果要用OGRE,其實(shí)還是得重頭再來。

            二、IRRLICHT因?yàn)闁|西不多,所以以前在大學(xué)的時(shí)候,就對其很熟悉了,回過頭來上手,也更容易。

            三、有一點(diǎn)點(diǎn)控制欲在里面,想看看IRRLICHT經(jīng)過改造后,是不是真的比不上OGRE。

            四、蜀門的成功,足夠說明一個(gè)游戲的畫面,不是全部,只要不影響大局, 有一個(gè)比較亮點(diǎn)的技術(shù)或者效果,就可以留住玩家。 我想,蜀門里裝備的流光效果,雖然就是經(jīng)過美術(shù)精心設(shè)計(jì)后的紋理動(dòng)畫, 但已經(jīng)足夠體現(xiàn)高級裝備和低級裝備的差距。 玩家也能感受到自己高級裝備的華麗, 所以,我更喜歡蜀門的小巧。

            五、犯賤,越是多的人喜歡的東西,越是不想整。

            六、想慢慢過渡,先使用IRRLICHT,直到IRRLICHT不夠用,就改,改完了,就把IRR所有的東西刪除了,名字換了。 就是自己的了。

            七、GAMELOFT的刺客信條用的是IRRLICHT,所以,我覺得還是可以的。 (PS:下載來玩了一下,在IPAD上,主角站立不動(dòng)的時(shí)候,會(huì)來回抖動(dòng), 攝相機(jī)移動(dòng)的時(shí)候,也會(huì)抖動(dòng),很費(fèi)解, 難道是浮點(diǎn)精度問題? 但UNITY3D和COCOS2D-X等是沒有這問題的呀)。

             

            其實(shí),列了很多條,最后也發(fā)現(xiàn),IRRLICHT除了要簡單點(diǎn)以外,是沒有OGRE那么強(qiáng)大的。 不過,我還是選擇了從簡,畢竟精力有限。 如果要把OGRE整套東西理解了,再逐步重寫,我估計(jì)會(huì)瘋掉。 畢竟大而全的東西,具體在用的時(shí)候,是要拋掉很多東西來換取效率的。

             

            既然到這個(gè)點(diǎn)了,不得不說點(diǎn)別的。

            11年的時(shí)候,公司研發(fā)的引擎在演示完DEMO后,就叫停了。 項(xiàng)目進(jìn)行了兩年半,最后只有一堆代碼和演示程序。 對公司來說,其實(shí)是一定的損失。 后來項(xiàng)目組成員轉(zhuǎn)戰(zhàn)WEB。  走到這一步,其實(shí)原來的成員只剩和我另一個(gè)搭檔了。

            沒想到,進(jìn)入了WEB,就一去不復(fù)返了。 并且,公司的WEB項(xiàng)目進(jìn)展也不是很順利。  都說畢業(yè)后兩年是一個(gè)分水嶺, 當(dāng)時(shí)正好畢業(yè)兩年。 于是決定換一個(gè)環(huán)境挑戰(zhàn)。 就來到了目前的公司,做RTS游戲服務(wù)器。  面對未知的東西,貌似更能激發(fā)我的興趣,如今馬上又是一年了。漸漸地,開始懷念引擎,懷念圖形。 可以說IRRLICHT目前就是被我用來表達(dá)我對圖形的思念。 雖然我圖形方面的技術(shù)很陳舊,老土, 但并不影響我說我喜歡搞圖形。

            文章就到此吧。也不知道再要說些什么了。

            posted @ 2013-04-11 01:30 麒麟子 閱讀(3410) | 評論 (5)編輯 收藏

            irrlicht引擎:中文支持

            還是先上圖吧

            這是使用freetype進(jìn)行中文顯示的效果。

            irrlicht由于是使用位圖字體的方式,是很容易替換掉字體的。 同時(shí),其本身也提供了Font接口替換的功能。

            具體做法和網(wǎng)上大多數(shù)人是一樣的。

             

            在做這個(gè)的時(shí)候,又引入了另一個(gè)話題, gameswf和kfont(KlayGE Font)

            gameswf是一個(gè)開源的C++ FLASH PLAYER。

            gameloft以及很多移動(dòng)應(yīng)用或者游戲都在使用它。

            當(dāng)然,也包括ScaleForm. 因?yàn)镾caleForm是商業(yè)的,所以比gameswf更加完善,雖然說,gameswf是ScaleForm的原型。

             

            kfont一直是自己喜歡的一種字體解決方案,其無比拉伸的能力非常討人喜歡。加上現(xiàn)在又單獨(dú)成庫了,如果不用gameswf的話,我想把它整合進(jìn)irrlicht中。 兩年前公司(先前的公司)的引擎就用上了這個(gè),遺憾字體庫不是我弄進(jìn)去的,一直對kfont沒有近距離接觸。

             

            網(wǎng)上下載下來的代碼 下面地址可供參考,這是我覺得眾多文章中,講得比較細(xì)的一個(gè)。

            http://blog.csdn.net/lee353086/article/details/5260101

             

            至于FreeType,大家去官方下載來編譯就可以了。

            posted @ 2013-04-11 01:01 麒麟子 閱讀(1083) | 評論 (0)編輯 收藏

            irrlicht引擎:Bloom效果

            先上圖,再說點(diǎn)別的。

             

            image

            BLOOM開

             

            2000

            BLOOM關(guān)

             

            在IRRLICHT中實(shí)現(xiàn)BLOOM,和其它引擎中沒有太多的不同。 SHADER還是那個(gè)SHADER。

            關(guān)于BLOOM的算法,也就那樣了,沒有特別之處,況且,我這BLOOM很暴力

            render scene to texture.

            1/4 downsample 選擇暴光像素

            h_blur  7次采樣 和權(quán)重混合

            v_blur  7次采樣 和權(quán)重混合

            compose 兩圖疊加

             

            下面說說我在irrlicht中實(shí)現(xiàn)post processing的方案。

            在irrlicht中是沒有屏幕對齊四邊形節(jié)點(diǎn)的,如果要特殊擴(kuò)展,就只能修改代碼了。我是盡量保證自己不修改IRR一行代碼, 除非是真正使用時(shí),要對效率進(jìn)行優(yōu)化。前現(xiàn)實(shí)現(xiàn)的GPU蒙皮,水面,鏡面等,都沒有修改過一行代碼, 因?yàn)槲也幌胍驗(yàn)樽约旱囊粫r(shí)需求,而改動(dòng)了那一堆。 當(dāng)我真的需要改動(dòng)irrlicht才能達(dá)到目標(biāo)的時(shí)候,表示irrlicht中我使用的部分,可以退休了。

             

            渲染場景的時(shí)候,我們通常在使用addXXXXSceneNode的時(shí)候,都默認(rèn)不傳父節(jié)點(diǎn)。這樣就是默認(rèn)的場景根節(jié)點(diǎn)。但是,當(dāng)我們要做post process的時(shí)候,就需要對場景中的物體進(jìn)行顯示的開和關(guān), 于是,我們?yōu)榱撕芸焖俚乜刂疲?于是將普通場景節(jié)點(diǎn)多加了一個(gè)父節(jié)點(diǎn), 而post processing作為場景的兄弟節(jié)點(diǎn), 這樣在渲染的時(shí)候,就可以方便地進(jìn)行相關(guān)控制了。

            大概是這樣的

                                      RootSceneNode

                 PostProcessingNode            SceneOjbectsNode

                                                         Obj1… Obj2….Obj3…

             

            流程:

            關(guān)閉    PostProcessingNode , 渲染  SceneOjbectsNode 下所有的物體到RT上。

            關(guān)閉    SceneOjbectsNode, 打開PostProcessingNode, 進(jìn)行一系列的后期效果處理。

             

            在irrlicht中是沒有提供屏幕對齊四邊形繪制的, 如果手工構(gòu)建,就很麻煩。 所以,我采用的是一種很常見的手法, 即通過UV坐標(biāo)來計(jì)算最最終的頂點(diǎn)坐標(biāo)值。

            VS的輸出,是規(guī)一化坐標(biāo)系, 即X,Y是處于 (-1,1)之間的, 于是。 我們只需要 pos = (uv-0.5)*2;  pos.y = –pos.y;就可以了。

            最近一直在加班,沒時(shí)間整理出代碼。 有興趣的朋友可以加下面的群

            Irrlicht Engine-China

            254431855

            posted @ 2013-04-11 00:49 麒麟子 閱讀(2161) | 評論 (0)編輯 收藏

            僅列出標(biāo)題
            共38頁: 1 2 3 4 5 6 7 8 9 Last 
            久久91精品久久91综合| 77777亚洲午夜久久多喷| 久久大香香蕉国产| 久久久久久精品无码人妻| 亚洲国产成人久久一区WWW| 国产成人久久精品二区三区| 日本久久久精品中文字幕| 97久久久精品综合88久久| 国产精品99久久久久久人| 9久久9久久精品| 94久久国产乱子伦精品免费| 国产精品无码久久四虎| 久久毛片免费看一区二区三区| 久久免费视频一区| 国产aⅴ激情无码久久| 欧美精品久久久久久久自慰| 国产精品久久永久免费| 狠狠精品久久久无码中文字幕 | 久久久久高潮毛片免费全部播放| 久久综合九色综合网站| 精品国产一区二区三区久久| 99久久国产综合精品五月天喷水 | 久久久精品人妻一区二区三区蜜桃 | 亚洲中文字幕无码久久精品1| 久久精品日日躁夜夜躁欧美| 少妇久久久久久久久久| 国产成人精品白浆久久69| 国产精品va久久久久久久| 久久这里都是精品| 久久久青草久久久青草| 国产精品成人久久久| 久久国产精品99精品国产987| 日韩欧美亚洲国产精品字幕久久久| 99久久精品免费看国产一区二区三区 | 久久天堂电影网| 国产69精品久久久久APP下载| 九九久久自然熟的香蕉图片| 无码国内精品久久人妻麻豆按摩| 久久精品aⅴ无码中文字字幕不卡| 久久播电影网| 久久国产精品国产自线拍免费|