if objPath is not None: triangles = dc.TriangleLoader() triangles.setScale(scale) triangles.setCenter(bary) triangles.addFromObj(objPath) positions, indices, normals = triangles.get() wgb.addTriangleDataset(positions, indices, normals, "Context", scale) # Finally, add the track data wgb.addTrajectoryDataset(tracks, attributes, names, "Trajectories", scale) # Add states (to the last dataset, which is the trajectory set) if addBundled is not None: tm.addAttributeAngleToStart() bundler = dc.EdgeBundler(tracks) bundler.estimateDefaultValues() bundler.runEdgeBundlingOpenCl() tracksBundled = bundler.getResult() wgb.addTrajectoryDatasetState(tracksBundled, "bundled") if addState2 is not None: tracks, attributes, names = loaderState2.get() wgb.addTrajectoryDatasetState(tracks, "state2", attributes) if addXYZAxes is not None: wgb.addXYZAxes(float(tickDistance) * float(scale)) if addCustomAxes is not None: print("Add custom axes") wgb.addCustomAxes(addCustomAxes, csvSep, csvNoHeader)