예제 #1
0
def Cylinder(col, length, radius = 0.98):
    sep = SoSeparator()

    cyl = SoCylinder()
    cyl.radius.setValue(radius)
    cyl.height.setValue(length)
    cyl.parts = SoCylinder.SIDES

    light = SoShapeHints()
    mat = SoMaterial()
    mat.emissiveColor = col
    mat.diffuseColor = col
    mat.transparency.setValue(0.5)

    rot = SoRotationXYZ()
    rot.axis = SoRotationXYZ.X
    rot.angle = pi / 2

    trans = SoTransparencyType()
#    trans.value = SoTransparencyType.DELAYED_BLEND
    trans.value = SoTransparencyType.SORTED_OBJECT_BLEND
#    trans.value = SoTransparencyType.SORTED_OBJECT_SORTED_TRIANGLE_BLEND

    sep.addChild(light)
    sep.addChild(rot)
    sep.addChild(trans)
    sep.addChild(mat)
    sep.addChild(cyl)

    return sep
예제 #2
0
 def setupscene(self):
     #coin3d setup
     vpRegion = SbViewportRegion(self.w, self.h)
     self.m_sceneManager = SoSceneManager()
     self.m_sceneManager.setViewportRegion(vpRegion)
     self.m_sceneManager.setBackgroundColor(SbColor(0.0, 0.0, 0.8))
     light = SoDirectionalLight()
     light2 = SoDirectionalLight()
     light2.direction.setValue(-1, -1, -1)
     light2.intensity.setValue(0.6)
     light2.color.setValue(0.8, 0.8, 1)
     self.scale = SoScale()
     self.scale.scaleFactor.setValue(
         0.001, 0.001, 0.001)  #OpenVR uses meters not milimeters
     self.camtrans0 = SoTranslation()
     self.camtrans1 = SoTranslation()
     self.cgrp0 = SoGroup()
     self.cgrp1 = SoGroup()
     self.sgrp0 = SoGroup()
     self.sgrp1 = SoGroup()
     self.camtrans0.translation.setValue([self.camToHead[0][0][3], 0, 0])
     self.camtrans1.translation.setValue([self.camToHead[1][0][3], 0, 0])
     sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph(
     )  #get active scenegraph
     #LEFT EYE
     self.rootScene0 = SoSeparator()
     self.rootScene0.ref()
     self.rootScene0.addChild(self.cgrp0)
     self.cgrp0.addChild(self.camtrans0)
     self.cgrp0.addChild(self.camera0)
     self.rootScene0.addChild(self.sgrp0)
     self.sgrp0.addChild(light)
     self.sgrp0.addChild(light2)
     self.sgrp0.addChild(self.scale)
     self.sgrp0.addChild(sg)  #add scenegraph
     #RIGHT EYE
     self.rootScene1 = SoSeparator()
     self.rootScene1.ref()
     self.rootScene1.addChild(self.cgrp1)
     self.cgrp1.addChild(self.camtrans1)
     self.cgrp1.addChild(self.camera1)
     self.rootScene1.addChild(self.sgrp1)
     self.sgrp1.addChild(light)
     self.sgrp1.addChild(light2)
     self.sgrp1.addChild(self.scale)
     self.sgrp1.addChild(sg)  #add scenegraph
예제 #3
0
    def __init__(self, name=""):
        super(Chapter, self).__init__()
        self.name = name
        self.book = None
        self.root = SoSeparator()
        self.root.setName("Chapter:root")
        self.pagesSwitch = SoSwitch()
        self.pagesSwitch.setName("Chapter:pages")
        self.root.addChild(self.pagesSwitch)

        self.__pages = nodeDict()
        ## ============================
        self.setupGui()
예제 #4
0
    def __init__(self):
        self.animation = None
        self.root = SoSwitch()
        self.separator = SoSeparator()
        self.drawStyle = SoDrawStyle()
        self.translation = SoTranslation()

        self.root.addChild(self.separator)
        self.separator.addChild(self.drawStyle)
        self.separator.addChild(self.translation)

        self.translation.translation = (0, 0, 0)

        self.show()
예제 #5
0
 def build_head(self):
     head_separator = SoSeparator()
     head_separator.setName('head')
     self.head = SoCone()
     self.head_transformation = SoTransform()
     self.head_material = SoMaterial()
     self.head_material.ambientColor = (.33, .22, .27)
     self.head_material.diffuseColor = (.78, .57, .11)
     self.head_material.specularColor = (.99, .94, .81)
     self.head_material.shininess = .28
     head_separator.addChild(self.head_material)
     head_separator.addChild(self.head_transformation)
     head_separator.addChild(self.head)
     return head_separator
예제 #6
0
def main():
    app = QApplication(sys.argv)

    root = SoSeparator()
    col = SoBaseColor()
    col.rgb = SbColor(1, 1, 0)
    root.addChild(col)
    root.addChild(SoCone())

    viewer = QuarterWidget()
    viewer.setSceneGraph(root)

    viewer.setWindowTitle("minimal")
    viewer.show()
    sys.exit(app.exec_())
예제 #7
0
 def build_tail(self):
     separator = SoSeparator()
     separator.setName('tail')
     self.tail = SoSphere()
     self.tail.radius = default_tail_radius
     self.tail_transformation = SoTransform()
     self.tail_material = SoMaterial()
     self.tail_material.ambientColor = (.33, .22, .27)
     self.tail_material.diffuseColor = (.78, .57, .11)
     self.tail_material.specularColor = (.99, .94, .81)
     self.tail_material.shininess = .28
     separator.addChild(self.tail_material)
     separator.addChild(self.tail_transformation)
     separator.addChild(self.tail)
     return separator
예제 #8
0
 def __init__(self, name=""):
     QtCore.QObject.__init__(self)
     self.name = name
     self.root = SoSeparator()
     self.root.setName("Page:root")
     self.children = nodeDict()
     self.camera_position = None
     self.camera_point_at = None
     self.camera_viewAll = True
     ## =========================
     self.animations = []
     self.objectsForAnimate = []
     self.coordPlanes = {}
     ## =========================
     self.setupGui()
     self.setupAxis()
     self.showAxis(False)
예제 #9
0
def main():
    width = 1600
    height = 1200
    timelimit = 10
    modeltranslation = 200

    SDL_Init(SDL_INIT_VIDEO)
    window = SDL_CreateWindow(b"benchmark", SDL_WINDOWPOS_CENTERED,
                              SDL_WINDOWPOS_CENTERED, width, height,
                              SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL)
    context = SDL_GL_CreateContext(window)
    SDL_GL_SetSwapInterval(0)  #no v-sync

    #coin3d setup
    vpRegion = SbViewportRegion(
        width,
        height,
    )
    m_sceneManager = SoSceneManager()
    m_sceneManager.setViewportRegion(vpRegion)
    m_sceneManager.setBackgroundColor(SbColor(0.0, 0.0, 0.8))
    rootScene = SoSeparator()
    rootScene.ref()
    camera = SoFrustumCamera()
    basePosition = SbVec3f(0.0, 0.0, 0.0)
    camera.position.setValue(basePosition)
    camera.focalDistance.setValue(5.0)
    camera.viewportMapping.setValue(SoCamera.LEAVE_ALONE)
    camera.nearDistance.setValue(0.1)
    camera.farDistance.setValue(10000.0)
    rootScene.addChild(camera)
    light = SoDirectionalLight()
    light2 = SoDirectionalLight()
    rootScene.addChild(light)
    rootScene.addChild(light2)
    trans = SoTranslation()
    trans.translation.setValue([0, 0, -modeltranslation])
    rotat = SoRotation()
    rotat.rotation.setValue(coin.SbVec3f(0, 1, 0), 0)
    rootScene.addChild(
        trans)  #translation have to be earlier than translated object
    rootScene.addChild(rotat)
    sg = FreeCADGui.ActiveDocument.ActiveView.getSceneGraph()
    rootScene.addChild(sg)  #get active scenegraph
    m_sceneManager.setSceneGraph(rootScene)

    notfinished = 1
    angle = 0
    frames = 0
    start = time()
    # Loop until time limit happens
    while notfinished:
        glUseProgram(0)
        #coin3d rendering
        angle = angle + 0.001
        frames = frames + 1
        rotat.rotation.setValue(coin.SbVec3f(0, 1, 0), angle)
        glEnable(GL_CULL_FACE)
        glEnable(GL_DEPTH_TEST)
        m_sceneManager.render()
        glDisable(GL_CULL_FACE)
        glDisable(GL_DEPTH_TEST)
        glClearDepth(1.0)
        # Swap front and back buffers
        SDL_GL_SwapWindow(window)
        stop = time()
        elapsed = stop - start
        if elapsed > timelimit:
            notfinished = 0

    print(frames, ' in ', elapsed, 'seconds, ', (frames / elapsed), 'fps')
    rootScene.unref()
    SDL_GL_DeleteContext(context)
    SDL_DestroyWindow(window)
    SDL_Quit()
예제 #10
0

if __name__ == "__main__":
    import sys
    from PyQt4 import QtGui
    from pivy.coin import SoSeparator, SoCone, SoSphere, SoCube
    # from pivy.gui.soqt import SoQt
    # SoQt.init(None)

    app = QtGui.QApplication(sys.argv)
    viewer = Viewer(lights=False)
    ## ============================
    viewer.book.createChapter()
    ## ============================
    viewer.chapter.createPage()
    sep = SoSeparator()
    sep.getGui = lambda: QtGui.QLabel("<center><h1>Sphere+Cone</h1></center>")
    sphere = SoSphere()
    cone = SoCone()
    sep.addChild(sphere)
    sep.addChild(cone)
    viewer.page.addChild(sep)
    ## ============================
    viewer.chapter.createPage()
    cube = SoCube()
    cube.getGui = lambda: QtGui.QLabel("<center><h1>Cubo</h1></center>")
    viewer.page.addChild(cube)
    ## ============================
    viewer.whichPage = 0
    viewer.resize(400, 400)
    viewer.show()