You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Example 6.3 includes several mistakes, however, I'm not sure whether the setValue() calls, e.g. as in
color[0].setValue(1, 1, 1)
and in
coords[0].setValue(0.25, 0.25)
should work Pivy-wise (as in the original C++ and the current Python example). In the current example they insert unexpected values into the scenegraph and the datatype of the elements in the colors list is changed from SbColor to SbVec3f. Anyhow, (otherwise?), I've included a working alternative for this example below. Best wishes, Peter
"""
This is an example from the Inventor Mentor,
chapter 6, example 3.
This example renders arguments as text within an
ExaminerViewer. It is a little fancier than 6.2.
"""
import sys
from PySide.QtGui import *
from pivy.coin import *
from pivy.quarter import *
def main():
# Initialize Inventor and Qt
app = QApplication(sys.argv)
viewer = QuarterWidget()
root = SoGroup()
# Set up camera
myCamera = SoPerspectiveCamera()
myCamera.position = (0, -(len(sys.argv) - 1) / 2, 10)
myCamera.nearDistance = 5.0
myCamera.farDistance = 15.0
root += myCamera
# Let's make the front of the text white,
# and the sides and back shiny yellow
myMaterial = SoMaterial()
# diffuse
colors = [SbColor()] * 3
colors[0] = SbColor(1, 1, 1)
colors[1] = SbColor(1, 1, 0)
colors[2] = SbColor(1, 1, 0)
myMaterial.diffuseColor.setValues(0, 3, colors)
# specular
colors[0].setValue(1, 1, 1)
"""
# Note: Inventor 2.1 doesn't support multiple specular colors.
# colors[1].setValue(1, 1, 0)
# colors[2].setValue(1, 1, 0)
# myMaterial.specularColor.setValues(0, 3, colors)
"""
myMaterial.specularColor.setValue(colors[0])
myMaterial.shininess.setValue(.1)
root += myMaterial
# Choose a font likely to exist.
myFont = SoFont()
myFont.name = "Times" # "Times-Roman"
root += myFont
# Specify a beveled cross-section for the text
myProfileCoords = SoProfileCoordinate2()
coords = [SbVec2f()] * 4
coords[0] = SbVec2f(.00, .00)
coords[1] = SbVec2f(.25, .25)
coords[2] = SbVec2f(1.25, .25)
coords[3] = SbVec2f(1.50, .00)
myProfileCoords.point.setValues(0, 4, coords)
root += myProfileCoords
myLinearProfile = SoLinearProfile()
index = (0, 1, 2, 3)
myLinearProfile.index.setValues(0, 4, index)
root += myLinearProfile
# Set the material binding to PER_PART
myMaterialBinding = SoMaterialBinding()
myMaterialBinding.value = SoMaterialBinding.PER_PART
root += myMaterialBinding
# Add the text
myText3 = SoText3()
myText3.string = "Beveled Text"
myText3.justification = SoText3.CENTER
myText3.parts = SoText3.ALL
root += myText3
viewer.setSceneGraph(root)
viewer.setWindowTitle("Complex 3D Text")
viewer.show()
viewer.viewAll()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
The text was updated successfully, but these errors were encountered:
Example 6.3 includes several mistakes, however, I'm not sure whether the setValue() calls, e.g. as in
color[0].setValue(1, 1, 1)
and in
coords[0].setValue(0.25, 0.25)
should work Pivy-wise (as in the original C++ and the current Python example). In the current example they insert unexpected values into the scenegraph and the datatype of the elements in the colors list is changed from SbColor to SbVec3f. Anyhow, (otherwise?), I've included a working alternative for this example below. Best wishes, Peter
The text was updated successfully, but these errors were encountered: