首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VRML索引FaceSet

VRML索引FaceSet
EN

Stack Overflow用户
提问于 2011-02-27 07:31:49
回答 1查看 2.1K关注 0票数 2

嗨,我想在VRML上创建一个带索引的FaceSet实体。问题是两张脸没有出现,我真的不知道为什么。

代码是:

代码语言:javascript
复制
Shape {
                    geometry IndexedFaceSet {
                        coord Coordinate {
                            point [0 0 0,     #0
                                0.3 0 0,      #1
                                0 1.2 0,      #2
                                0.3 1.2 0,    #3
                                0 0 -1,       #4
                                0.3 0 -1,     #5
                                0 1.2 -1,     #6
                                0.3 1.2 -1,   #7
                                0.6 1.2 -0.3, #8
                                0.6 1.2 -0.7] #9
                            }   
                            coordIndex [6 7 9 8 3 2 -1,
                                0 1 5 4 -1,
                                1 5 9 8 -1,
                                0 1 3 2 -1,
                                4 5 7 6 -1,
                                0 4 6 2 -1,
                                3 1 8 -1,
                                7 5 9 -1
                            ]

                        }

                    appearance Appearance { material Material { diffuseColor 0 0 0.8 }}
                }

没有出现的两个边是最后的边。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-27 08:40:05

首先,每一面都必须按逆时针顺序定义才能显示,因为除非使用solid FALSE,否则IndexedFaceSet对象是单面的,这就是为什么模型中的一些面看起来像是丢失了,但实际上从另一侧可以看到它们。

解决方案1: solid FALSE

面从两侧都可见,因此它们是顺时针还是逆时针定义都无关紧要。这是一个简单的技巧,但它会使查看器内部渲染的多边形数量加倍。

代码语言:javascript
复制
#VRML V2.0 utf8

Shape {
    appearance Appearance {
        material Material {
            diffuseColor 0 0 0.8
        }
    }
    geometry IndexedFaceSet {
        solid FALSE
        coord Coordinate {
            point [0 0 0, 0.3 0 0, 0 1.2 0, 0.3 1.2 0, 0 0 -1 0.3 0 -1, 0 1.2 -1, 0.3 1.2 -1, 0.6 1.2 -0.3, 0.6 1.2 -0.7]
        }
        coordIndex [
            6 7 9 8 3 2 -1,
            0 1 5 4 -1,
            1 5 9 8 -1,
            0 1 3 2 -1,
            4 5 7 6 -1,
            0 4 6 2 -1,
            3 1 8 -1,
            7 5 9 -1
        ]
    }
}

解决方案2:翻转有问题的faces

反转应翻转的特定面的顶点顺序。

代码语言:javascript
复制
#VRML V2.0 utf8

Shape {
    appearance Appearance {
        material Material {
            diffuseColor 0 0 0.8
        }
    }
    geometry IndexedFaceSet {
        coord Coordinate {
            point [0 0 0, 0.3 0 0, 0 1.2 0, 0.3 1.2 0, 0 0 -1 0.3 0 -1, 0 1.2 -1, 0.3 1.2 -1, 0.6 1.2 -0.3, 0.6 1.2 -0.7]
        }
        coordIndex [
            2 3 8 9 7 6 -1, # flipped
            4 5 1 0 -1,     # flipped
            1 5 9 8 -1,
            0 1 3 2 -1,
            6 7 5 4 -1,     # flipped
            2 6 4 0 -1,     # flipped
            3 1 8 -1,
            9 5 7 -1        # flipped
        ]
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5130443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档