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
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
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()
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()
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
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_())
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
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)
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()
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()