亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mread3ds.bas

?? 3ds文件瀏覽程序
?? BAS
?? 第 1 頁 / 共 4 頁
字號:
Attribute VB_Name = "mRead3ds"
Option Explicit

'*************************************************************************
'FUNCTION: reads a 3ds file and displays all known chunks in
'   a treeview control.
'AUTHOR: edx - edx@hk.super.net, Feb 98 - all rights reserved
'NOTES: based in part on the following:
'   XRoads, in '3D Graphic File Formats', by Keith D. Rule
'   'Chess', by Nate Robbins
'   'View3ds', by David Farrel
'   AutoDesk's 3DSFileToolkit
'   Almost all chunks are currently read. Many chunks which are
'   not relevant are deliberately skipped but added to the treeview control.
'   The gl rendering is pretty primitive - lights and cameras aren't
'   drawn, and the texturing uses only the main map.
'*************************************************************************
'OVERVIEW.
'There are 3 main collections: Scene, Materials, Textures.
'
'   Scene - a collection of top level nodes. Nodes may have other
'     |      other nodes as children. Nodes also may contain a collection
'     |      of Fields (the CField or the MFxxx classes).
'     |
'   Node  - Nodes represent major sections (MDATA, KFDATA) and minor
'     |      sections which define objects (NAMED_OBJECTS, and the objects
'     |      themselves (camera, light, mesh).
'     |
'   Fields - Fields store data for Node objects.
'
'
'   Materials - a collection of Material objects.
'     |
'   Material - a named material. Materials do not have children, but
'     |          may contain a collections of Maps (image files) and a collection
'     |          of Fields (color, etc).
'     |
'   Maps    - a collection of Map objects.
'     |
'   Map     - the filename and settings for an image file used for texturing.
'               A Map notifies the Textures collection to actually load the
'               file and create a gl texture.
'
'
'   Textures - a collection of Texture objects.
'     |
'   Texture  - loads an image file to use for texturing.
'
'   The Scene collection holds all the top-level nodes, typically about 3 nodes.
'   Most nodes are children of other nodes. To draw, the Scene tells each child
'   node to draw. The nodes recurse telling their children to draw. Most nodes
'   don't draw anything - only mesh nodes are drawn.
'
'   Materials are maintained in a collection, but a reference to each Material
'   is added to a special 'Materials' node so that when 'FillTree' is called, the
'   materials will be added to the the treeview control.
'
'   Textures are not shown in the tree. Each map in a material is shown in the
'   tree as a field of the material.
'
'   A second window with an ocx acts as a material viewer. It draws a sphere
'   for each material and applies whatever texture it uses.
'*************************************************************************
'
Const SizeofChunk = 6
'File mapping handles and such
Dim hFile&, hMap&, base_Ptr&, m_Ptr&
Dim FileSize&, FileVersion&
Dim FileEnd&
Dim lx!, rx!, ty!, by!, fz!, bz! 'bounding box
Dim NextLight& 'gl light
Dim BadLength As Boolean

'----------------------------------------------------
'Read the ChunkID and Length
'abort if this fails
'----------------------------------------------------
Public Function ReadChunkHeader(Chunk As Chunk3DS)
On Error GoTo ErrorHandler
    If m_Ptr + SizeofChunk <= FileEnd Then
        If Not ReadShort(m_Ptr, Chunk.ID) Then Exit Function
        If Not ReadLong(m_Ptr, Chunk.Length) Then Exit Function
        'Debug.Print "Chunk==========================="
        'Debug.Print "Offset:" & Offset
        'Debug.Print "ID:" & ChunkName(Chunk.ID) & " - " & "&H" & Hex(Chunk.ID)
        'Debug.Print "ChunkLength:" & Chunk.Length
        'Debug.Print "Filesize:" & FileSize
        If (m_Ptr + Chunk.Length - SizeofChunk) > FileEnd Then
            Debug.Print m_Ptr + Chunk.Length
            Debug.Print FileEnd
            Debug.Print "ID:" & ChunkName(Chunk.ID) & " - " & "&H" & Hex(Chunk.ID)
            Debug.Assert 0
            If BadLength Then
                Debug.Assert 0
            End If
            Exit Function
        End If
        ReadChunkHeader = True
    Else
        Debug.Assert 0
    End If
'----------------------------------------------------
Exit Function
ErrorHandler:
    Debug.Assert 0
    Exit Function
End Function

'----------------------------------------------------
'skip the chunk, but add a field to the current node for it
'abort if this fails
'----------------------------------------------------
Public Function SkipChunk(ParentNode As Object, Chunk As Chunk3DS) As Boolean
Dim Field As CField, lng&, s$, ChunkStart&
On Error GoTo ErrorHandler
    'make sure we're not lost
    If Chunk.Length < SizeofChunk Then
        Debug.Assert 0
        Exit Function
    End If
    ChunkStart = m_Ptr - SizeofChunk
    If ChunkStart + Chunk.Length > FileEnd Then
        Debug.Assert 0
        Exit Function
    End If
    Debug.Print "Skipping: " & ChunkName(Chunk.ID)
    'm_Ptr = chunkStart + chunk.length
    lng = Chunk.Length - Len(Chunk)
    'save any data
    If lng > 0 Then
        m_Ptr = ChunkStart + Len(Chunk)
        s = String(lng + 1, Chr$(0))
        CopyToStrFromPtr s, m_Ptr, lng
    Else
        'probably a boolean flag
        s = "[True]"
    End If
    m_Ptr = m_Ptr + lng
    If Not ParentNode Is Nothing Then
        Set Field = ParentNode.AddField(Chunk.ID)
    Else
        Dim Node As CNode
        Set Node = Scene.AddNode(Nothing, Chunk.ID, NODE_ROOT, "Error")
        Set Field = Node.AddField(Chunk.ID)
    End If
    Field.Value = s
    SkipChunk = True
'----------------------------------------------------
Exit Function
ErrorHandler:
    Debug.Print Err.Description
    Debug.Assert 0
    Exit Function
    Resume Next
End Function

'----------------------------------------------------
' Main loop for reading 3ds file.
'----------------------------------------------------
Public Sub Read3ds(Filename$)
Dim Chunk As Chunk3DS, FileTitle$, r&, Path$
Dim HeaderNode As CNode, Field As CField
'On Error GoTo ErrorHandler
    ReadyToDraw = False
    '----------------------------------------------
    ' map the file
    If Not LoadFile(Filename, hFile, hMap, base_Ptr) Then
        MsgBox "Failed to open file."
        GoTo done
    End If
    m_Ptr = base_Ptr
    FileSize = GetFileSize(hFile, 0)
    FileEnd = m_Ptr + FileSize
    ' Verify file type
    If Not ReadChunkHeader(Chunk) Then Exit Sub
    Select Case Chunk.ID
    Case M3DMAGIC, MLIBMAGIC
    Case Else
        MsgBox "File is not a 3ds binary file."
        GoTo done
    End Select
    ' Get File Size
    If Chunk.Length <> FileSize Then
        BadLength = True
        Debug.Assert 0
    End If
    '----------------------------------------------
    'clear the old scene
    Scene.Clear
    NextLight = 1
    ELog = ""
    Materials.Clear
    Textures.Clear
    '----------------------------------------------
    'add a special node for the file header chunks
    Set HeaderNode = Scene.AddNode(Nothing, X3DS_HEADER, NODE_ROOT)
    'add a field for the magic chunk
    Set Field = HeaderNode.AddField(Chunk.ID)
    Field.Value = Chunk.Length
    '
    '----------------------------------------------
    'set the form caption and status line
    r = GetLast(Filename, "\")
    If r Then
        FileTitle = Mid$(Filename, r + 1)
        Path = Left$(Filename, r)
    Else: FileTitle = Filename
    End If
    frmMain.Caption = "View3d - " & FileTitle
    frmMain.sts.Panels(1) = "Reading " & FileSize & " bytes..."
    frmMain.sts.Refresh
    Debug.Print Filename & "  Size: " & FileSize
    '
    '----------------------------------------------
    'initialize bounding box
    lx = 10000000
    rx = -lx: ty = rx: fz = rx
    by = lx: bz = lx
    '----------------------------------------------
    ' Loop through the chunks
    Do While m_Ptr < FileEnd
        r = m_Ptr
        If Not ReadChunkHeader(Chunk) Then GoTo ErrorHandler
        Select Case Chunk.ID
        'file header chunks
        Case M3D_VERSION:
            If Not ReadLong(m_Ptr, r) Then GoTo ErrorHandler
            Set Field = HeaderNode.AddField(M3D_VERSION)
            Field.Value = r
        Case MLIBMAGIC, CMAGIC
            If Not SkipChunk(Nothing, Chunk) Then GoTo ErrorHandler
        'major section chunks
        Case MDATA:
            If Not ReadMDATA(Nothing, Chunk) Then GoTo ErrorHandler
        Case KFDATA
            If Not ReadKFDATA(Nothing, Chunk) Then GoTo ErrorHandler
        Case Else
            If Not SkipChunk(Nothing, Chunk) Then GoTo ErrorHandler
        End Select
    Loop
    GL.SetCenter lx, rx, by, ty, bz, fz
done:
    CloseFile hFile, hMap, base_Ptr
    Scene.FillTree
    Materials.LoadMaps Path
    ReadyToDraw = True
    Scene.Draw 'force the scene to compile
    Exit Sub
'----------------------------------------------------
ErrorHandler:
    CloseFile hFile, hMap, base_Ptr
    Debug.Assert 0
    Scene.FillTree
    ReadyToDraw = True
    Scene.Draw 'force the scene to compile
End Sub

'----------------------------------------------------
'CHUNK READING ROUTINES
'the header will have already been read. These routines will create
'a node and read the subchunks
'----------------------------------------------------
'----------------------------------------------------
'MDATA - top level objects
'return true if read or skipped, 0 for error
'----------------------------------------------------
Public Function ReadMDATA(ParentNode As CNode, MyChunk As Chunk3DS)
Dim MyChunkStart&, MyChunkEnd&
Dim Version&, MScale!, MyNode As CNode
Dim ChunkStart&, Chunk As Chunk3DS
Dim Field As CField, r!, g!, b!
Dim Mats As CNode
On Error GoTo ErrorHandler
    'add this to the nodes collection, makes it the current node
    Set MyNode = Scene.AddNode(ParentNode, MDATA, NODE_ROOT)
    GetSize MyChunkStart, MyChunkEnd, MyChunk
    Do While m_Ptr < MyChunkEnd
        'Read subchunks
        ChunkStart = m_Ptr
        If Not ReadChunkHeader(Chunk) Then Exit Function
        Select Case Chunk.ID
        'section settings
        Case MESH_VERSION:
            If Not ReadLong(m_Ptr, Version) Then Exit Function
            Set Field = MyNode.AddField(MESH_VERSION)
            Field.Value = Version
        Case MASTER_SCALE:
            If Not ReadFloat(m_Ptr, MScale) Then Exit Function
            Set Field = MyNode.AddField(MASTER_SCALE)
            Field.Value = MScale
            GL.MasterScale = MScale
        'section chunks
        Case MAT_ENTRY
            If Mats Is Nothing Then
                Set Mats = Scene.AddNode(MyNode, X3DS_MATERIALS, NODE_ROOT)
            End If
            If Not ReadMatEntry(Mats, Chunk) Then Exit Function
        Case NAMED_OBJECT
            If Not ReadNamedObject(MyNode, Chunk) Then Exit Function
        Case AMBIENT_LIGHT
            If Not ReadColor(MyNode, r, g, b) Then Exit Function
            Set Field = MyNode.AddField(AMBIENT_LIGHT)
            Field.Value = r & "," & g & "," & b
        'sections which are skipped
        Case SOLID_BGND, BIT_MAP, V_GRADIENT, USE_BIT_MAP, USE_SOLID_BGND, USE_V_GRADIENT, _
            FOG, LAYER_FOG, DISTANCE_CUE, USE_FOG, USE_LAYER_FOG, USE_DISTANCE_CUE
            If Not SkipChunk(MyNode, Chunk) Then GoTo ErrorHandler
        Case VIEWPORT_LAYOUT, LO_SHADOW_BIAS, HI_SHADOW_BIAS, SHADOW_MAP_SIZE, SHADOW_SAMPLES, _
            SHADOW_RANGE, SHADOW_FILTER, RAY_BIAS, O_CONSTS, DEFAULT_VIEW
            If Not SkipChunk(MyNode, Chunk) Then GoTo ErrorHandler
        'unknown
        Case Else:
            Debug.Assert 0
            If Not SkipChunk(MyNode, Chunk) Then GoTo ErrorHandler
        End Select
    Loop
    ReadMDATA = True
'----------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩高清欧美激情| 欧美日韩1234| 亚洲电影在线免费观看| 欧美日本一区二区| 国产综合一区二区| 香蕉成人啪国产精品视频综合网| 欧美成人三级电影在线| eeuss鲁片一区二区三区| 亚洲国产日韩a在线播放| 精品久久久久久久一区二区蜜臀| 精品一区二区在线播放| 久久久国产精品午夜一区ai换脸| heyzo一本久久综合| 日韩黄色免费电影| 中文字幕高清不卡| 在线成人高清不卡| 国产91精品露脸国语对白| 亚洲午夜久久久久久久久久久| 精品国产在天天线2019| 欧美在线一二三| 国产精品一卡二卡| 666欧美在线视频| 日韩精品午夜视频| 中文字幕一区二区日韩精品绯色| 在线91免费看| 色综合天天做天天爱| 99久久er热在这里只有精品15 | 美国毛片一区二区| 精品国产露脸精彩对白| 91豆麻精品91久久久久久| 国产电影一区二区三区| 日本中文字幕一区| 亚洲午夜精品在线| 怡红院av一区二区三区| 久久婷婷国产综合精品青草| 欧美日韩电影在线| av电影一区二区| 国产精品一区在线| 美女视频第一区二区三区免费观看网站| 中文字幕一区二区在线播放| 久久综合五月天婷婷伊人| 91 com成人网| 欧美视频完全免费看| 91香蕉视频黄| 国产在线播放一区| 日本在线不卡视频| 日韩二区三区在线观看| 国产精品美女久久久久久2018| 69堂精品视频| 欧美日韩激情在线| 欧洲人成人精品| 色拍拍在线精品视频8848| gogo大胆日本视频一区| 大尺度一区二区| 国产成人精品影院| 粉嫩嫩av羞羞动漫久久久| 国产专区综合网| 激情小说欧美图片| 韩国女主播成人在线| 美女视频黄久久| 激情五月激情综合网| 国内精品视频666| 精品一区二区三区影院在线午夜| 亚洲国产cao| 午夜精品久久久久久久久久久| 一区二区高清免费观看影视大全| 亚洲欧美国产三级| 一区二区三区日韩精品| 亚洲一区二区影院| 五月婷婷激情综合网| 日产欧产美韩系列久久99| 免费在线观看一区二区三区| 另类人妖一区二区av| 国产呦精品一区二区三区网站| 国产一区二区三区四区五区入口 | 天堂成人免费av电影一区| 亚洲大片在线观看| 日本欧洲一区二区| 激情综合色播五月| 丁香激情综合国产| 欧亚一区二区三区| 91精品国产色综合久久ai换脸| 欧美一区二区三区小说| 久久综合九色综合97婷婷女人| 中文字幕不卡的av| 亚洲一区二区高清| 老司机精品视频在线| 成人爱爱电影网址| 色中色一区二区| 欧美视频在线观看一区| 欧洲一区在线观看| 99久久精品免费观看| 欧美丰满少妇xxxbbb| 一区二区三区四区视频精品免费| 亚洲欧美一区二区三区孕妇| 亚洲国产乱码最新视频| 国产麻豆成人传媒免费观看| www.视频一区| 欧美精品日韩一区| 国产欧美精品一区二区色综合| 成人欧美一区二区三区视频网页 | 久久久久久99久久久精品网站| 中文字幕av资源一区| 亚洲成人av在线电影| 国产一区二区美女诱惑| 99国产精品一区| 欧美色男人天堂| 国产性色一区二区| 图片区小说区国产精品视频| 国产精品视频一区二区三区不卡| 国产日产欧美精品一区二区三区| 国产精品久久久久精k8| 日韩精品三区四区| 成人免费视频免费观看| 欧美丰满一区二区免费视频| 国产精品亲子乱子伦xxxx裸| 日韩一区精品字幕| 色呦呦日韩精品| 欧美一级黄色片| 亚洲三级在线播放| 激情图片小说一区| 欧美日韩成人综合在线一区二区| 国产精品美女一区二区在线观看| 日韩av网站免费在线| 91免费国产在线观看| 日韩视频免费观看高清完整版 | 3751色影院一区二区三区| 中文字幕日韩一区二区| 久久爱www久久做| 在线观看日韩高清av| 久久99久久久欧美国产| 污片在线观看一区二区| 懂色av一区二区在线播放| 91视频com| 国产区在线观看成人精品| 日韩影院精彩在线| 欧美视频在线播放| 亚洲摸摸操操av| 北条麻妃一区二区三区| 精品成人在线观看| 日本亚洲电影天堂| 欧美日韩国产一区| 一区二区三区不卡视频在线观看| 成人一级片网址| 国产肉丝袜一区二区| 国产精品综合av一区二区国产馆| 欧美一卡二卡三卡四卡| 午夜a成v人精品| 色婷婷一区二区| 亚洲免费三区一区二区| 日本中文一区二区三区| 欧美丰满高潮xxxx喷水动漫| 视频一区视频二区在线观看| 欧美视频日韩视频在线观看| 亚洲韩国一区二区三区| 欧美无砖专区一中文字| 亚洲一区精品在线| 欧美日韩在线一区二区| 亚洲韩国精品一区| 欧美久久高跟鞋激| 美女被吸乳得到大胸91| 欧美精品日日鲁夜夜添| 青娱乐精品视频在线| 欧美精品第一页| 亚洲午夜国产一区99re久久| 色久综合一二码| 亚洲综合精品久久| 欧美日韩精品一区二区在线播放| 亚洲国产成人av| 91久久精品一区二区| 亚洲欧美国产毛片在线| 在线观看日韩电影| 一区二区三区欧美激情| 欧美日韩久久久一区| 麻豆精品一区二区三区| 国产视频在线观看一区二区三区| 成人激情开心网| 午夜精品aaa| 久久久久久亚洲综合影院红桃| 成人理论电影网| 亚洲美女电影在线| 欧美日韩www| 久久99国产精品久久99| 精品对白一区国产伦| 亚洲综合久久久久| 日韩女同互慰一区二区| 色综合天天综合在线视频| 久久国产生活片100| 亚洲精品福利视频网站| 精品国产一区二区三区av性色 | 91精品国产免费| 成人av动漫在线| 久久99久久精品| 亚洲主播在线观看| 国产免费观看久久| 精品免费国产二区三区| 欧美日韩五月天| 91尤物视频在线观看| 国产专区欧美精品| 青青草原综合久久大伊人精品 |