Как быстро переключаться между лицом и линией?

Я хочу отобразить объект, который можно переключать между лицом и линией с помощью переключателя. Что я должен делать? вот мой код:

1 ответ

Решение

Вы можете использовать Switch узел, который содержит две версии объекта (одна использует IndexedFaceSet, а другая - IndexedLineSet) и переключаться между ними с помощью Switch.whichChoice имущество.

Вот пример:

Group {
    children [
        DEF sensor TouchSensor {}
        DEF shapes Switch {
            whichChoice 0
            choice [

                # Choice 0: Not wireframe
                Shape {
                    appearance DEF appearance Appearance {
                        material Material {
                            emissiveColor 0 0.5 0
                        }
                    }
                    geometry IndexedFaceSet {
                        coordIndex [0 1 2 0 -1]
                        coord DEF coords Coordinate {
                            point [
                                -2 -2 0, 0 2 0, 2 -2 0
                            ]
                        }
                        solid FALSE
                    }
                }

                # Choice 1: Wireframe
                Shape {
                    appearance USE appearance
                    geometry IndexedLineSet {
                        coordIndex [0 1 2 0 -1]
                        coord USE coords
                    }
                }

            ]
        }
    ]
}


DEF script Script {
    field       SFNode      shapes      USE shapes
    eventIn     SFTime      clicked

    directOutput TRUE
    url "javascript:

    function clicked(){
        if (shapes.whichChoice == 0){
            shapes.whichChoice = 1;
        } else {
            shapes.whichChoice = 0;     
        }
    }

    "
}
ROUTE sensor.touchTime TO script.clicked
Другие вопросы по тегам