Bonjour j'utilise la librairie vtk en C pour afficher un graph en 3D :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
 
 
vtkSmartPointer<vtkMutableDirectedGraph> g = vtkSmartPointer<vtkMutableDirectedGraph>::New();
 
	vtkIdType v1 = g->AddVertex();
	vtkIdType v2 = g->AddVertex();
	vtkIdType v3 = g->AddVertex();
 
	g->AddEdge ( v1, v2 );
	g->AddEdge ( v2, v3 );
	g->AddEdge ( v3, v1 );
 
	vtkSmartPointer<vtkGraphLayout> layout =  vtkSmartPointer<vtkGraphLayout>::New();
	vtkSmartPointer<vtkSimple2DLayoutStrategy> strategy =  vtkSmartPointer<vtkSimple2DLayoutStrategy>::New();
	layout->SetInput(g);
	layout->SetLayoutStrategy(strategy);
 
 
 
 
????????????????????
 
 
	vtkTubeFilter *tubes = vtkTubeFilter::New();
	tubes->SetInputConnection(????????????????????????);
	tubes->SetRadius(0.01);
	tubes->SetNumberOfSides(6);
 
	// and set up a polydata mapper to convert to renderable polygons
	vtkPolyDataMapper *mapEdges = vtkPolyDataMapper::New();
	mapEdges->SetInputConnection(tubes->GetOutputPort());
 
	// set up an actor to make the edges part of the scene
	vtkActor *edgeActor = vtkActor::New();
	edgeActor->SetMapper(mapEdges);
	edgeActor->GetProperty()->SetColor(vtk_peacock[0],vtk_peacock[1],vtk_peacock[2]);
	edgeActor->GetProperty()->SetSpecularColor(1, 1, 1);
	edgeActor->GetProperty()->SetSpecular(0.3);
	edgeActor->GetProperty()->SetSpecularPower(20);
	edgeActor->GetProperty()->SetAmbient(0.2);
	edgeActor->GetProperty()->SetDiffuse(0.8);
 
	// Create graphics objects
	// Create the rendering window, renderer, and interactive renderer
	vtkRenderer *renderer = vtkRenderer::New();
	vtkRenderWindow *renderWindow = vtkRenderWindow::New();
	renderWindow->AddRenderer(renderer);
	vtkRenderWindowInteractor *interactor = vtkRenderWindowInteractor::New();
	interactor->SetRenderWindow(renderWindow);
 
	renderer->AddActor(edgeActor);
	renderer->SetBackground(1,1,1);
	renderWindow->SetSize(450,450);
 
	renderer->ResetCamera();
	renderer->GetActiveCamera()->Zoom(1.5);
 
	interactor->Initialize();
	interactor->Start();
 
	renderWindow->Render();
j'essaye de changer la forme des edges du graph, d'une simple ligne j'aimerai un tube en 3d. Dans le code ci dessous, j'ai mis des points d'interrogation, car je ne sais pas faire l'association entre les edges de mon graphe et l'objet vtkTubeFilter.


merci