Pages : 1
#1 Le 26/07/2010, à 15:58
- kikislater
Plugin python VTK pour Blender
Bonjour,
J'avais posté dans la rubrique Graphisme mais comme je n'ai pas de réponse et que c'est un script développé en python, je reposte ici. Soyez indulgent svp, merci.
Une âme charitable pourrait-elle m'aider ce utiliser ce script python permettant de convertir un fichier VTK en mesh Blender.
Les indications sont sur cette page :
http://www.ualberta.ca/CNS/RESEARCH/Vis/VTKBlender/index.html
J'ai mis VTKBlender.py dans ~/.blender/scripts, et j'y ai ajouté ça :
VTK_ROOT = /usr/local/lib/python2.6/dist-packages
LIBRARY_OUTPUT_PATH = /usr/local/lib/python2.6/dist-packages
PATH_TO_VTKBlender_MODULE = ~/.blender/scripts
import sys
sys.path.append($VTK_ROOT)
sys.path.append(${LIBRARY_OUTPUT_PATH})
sys.path.append(${PATH_TO_VTKBlender_MODULE})
Mais sans succès !
D'avance merci
Hors ligne
#2 Le 27/07/2010, à 16:04
- jde3
Re : Plugin python VTK pour Blender
Je connais pas ce script, mais en python, pour faire référence à une variable, on ne la précède pas de $. De plus, il est de coutume de faire les imports avant de commencer le code. Ton code deviendrait donc :
import sys
VTK_ROOT = "/usr/local/lib/python2.6/dist-packages"
LIBRARY_OUTPUT_PATH = "/usr/local/lib/python2.6/dist-packages"
PATH_TO_VTKBlender_MODULE = "~/.blender/scripts"
sys.path.append(VTK_ROOT)
sys.path.append(LIBRARY_OUTPUT_PATH)
sys.path.append(PATH_TO_VTKBlender_MODULE)
Dernière modification par jde3 (Le 27/07/2010, à 16:05)
Hors ligne
#3 Le 27/07/2010, à 16:13
- kikislater
Re : Plugin python VTK pour Blender
Merci pour les indications. En fait il n'y a pas de problème de variables environnement.
Le wrapper vtk est reconnu et utilisé par Blender et python correctement.
En effet, j'arrive à lancer ce script dans et hors Blender :
#!/usr/bin/env python
import vtk
try:
import Blender
from Blender import Mesh, Object, Material, Scene
import VTKBlender
reload(VTKBlender)
inside_blender=1
except:
inside_blender=0def main():
lut = vtk.vtkLookupTable()
lut.SetNumberOfColors(30)
lut.SetHueRange(0.667,0.0);
lut.Build()if (inside_blender):
me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetExtrudedLine(), lut))
AddMesh(me)
me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetLine(), lut))
AddMesh(me)
me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetPolyLine(), lut))
AddMesh(me)
me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetPoints(), lut))
AddMesh(me)
me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetCube(), lut))
AddMesh(me)
me = VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetCylinder(), lut))
AddMesh(me)me = Mesh.Get("Cube")
VTKBlender.PolyDataMapperToBlender(GetBasicMapper(GetVisQuad(), lut), me)
me.update()
Blender.Redraw()else:
VtkInit()
VtkAddMapper(GetBasicMapper(GetExtrudedLine(), lut))
VtkAddMapper(GetBasicMapper(GetLine(), lut))
VtkAddMapper(GetBasicMapper(GetPolyLine(), lut))
VtkAddMapper(GetBasicMapper(GetPoints(), lut))
VtkAddMapper(GetBasicMapper(GetCube(), lut))
VtkAddMapper(GetBasicMapper(GetCylinder(), lut))
VtkAddMapper(GetBasicMapper(GetVisQuad(), lut))
VtkInteract()def AddMesh(me):
sc = Scene.GetCurrent()
ob = Object.New('Mesh')
ob.link(me)
sc.objects.link(ob)
def GetBasicMapper(ob, lut):
obMapper = vtk.vtkPolyDataMapper()
obMapper.SetInput(ob)
obMapper.SetLookupTable(lut)return obMapper
####################### VTK Render Stuff ###################
def VtkAddMapper(obMapper):
global ren
obActor = vtk.vtkActor()
obActor.SetMapper(obMapper)
ren.AddActor(obActor)def VtkInit():
global ren, iren, renWinren = vtk.vtkRenderer()
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(ren)
iren = vtk.vtkRenderWindowInteractor()
iren.SetRenderWindow(renWin)ren.SetBackground(0.1, 0.2, 0.4)
renWin.SetSize(200, 200)iren.Initialize()
def VtkInteract():
global renWin, iren
renWin.Render()# Start the event loop.
iren.Start()####################### Some PolyData Objects ###################
def GetVisQuad():
quadric = vtk.vtkQuadric()
quadric.SetCoefficients(.5, 1, .2, 0, .1, 0, 0, .2, 0, 0)sample = vtk.vtkSampleFunction()
sample.SetSampleDimensions(30, 30, 30)
sample.SetImplicitFunction(quadric)contours = vtk.vtkContourFilter()
contours.SetInput(sample.GetOutput())
contours.GenerateValues(5, 0.0, 1.2)return contours.GetOutput()
def GetCylinder():
ob = vtk.vtkCylinderSource()
ob.SetResolution(8)
ob.SetCenter(4,0,5)return ob.GetOutput()
def GetCube():
ob = vtk.vtkCubeSource()
ob.SetCenter(6,3,0)
return ob.GetOutput()def GetExtrudedLine():
ob = vtk.vtkLineSource()ob.SetPoint1(3, 2, 1)
ob.SetPoint2(1, 1, 1)
ob.SetResolution(8)tube = vtk.vtkTubeFilter()
tube.SetInput(ob.GetOutput())
tube.SetRadius(0.2)
tube.SetNumberOfSides(6)return tube.GetOutput()
def GetPolyLine():
ob = vtk.vtkLineSource()ob.SetPoint1(2, 2, 3)
ob.SetPoint2(1, 4, 1)
ob.SetResolution(8)return ob.GetOutput()
def GetLine():
ob = vtk.vtkLineSource()ob.SetPoint1(1, 3, 2)
ob.SetPoint2(-1, 1, 1)
ob.SetResolution(1)return ob.GetOutput()
def GetPoints():
ob = vtk.vtkPointSource()ob.SetNumberOfPoints(100)
ob.SetCenter(-3, 3, 3)
ob.SetRadius(3)return ob.GetOutput()
main()
Le script ci-dessus importe les VTK de démos dans Blender.
Comment faire maintenant pour intégrer mes propres VTK et non pas ceux de démo ?
D'avance merci.
J'ai eu plus de réponse ici :
http://blenderclan.tuxfamily.org/html/modules/newbb/viewtopic.php?topic_id=26768&forum=2
Hors ligne
#4 Le 04/08/2010, à 08:53
- kikislater
Re : Plugin python VTK pour Blender
up !
On sait jamais s'il y en a qui ont des idées ...
Hors ligne