}
private BranchGroup createParts() {
BranchGroup branchGroup = new BranchGroup();
Point3d currentPartStartPoint = new Point3d(0, 0, 0);
TransformGroup previousTransformGroup = new TransformGroup();
branchGroup.addChild(previousTransformGroup);
for (TreeBranchPart branchPart : treeBranch.getParts()) {
TreeBranchPart3D branchPart3D = branchPart.getBranchPart3D();
Group branchPartGroup = branchPart3D.getGroup();
BranchGroup currentBranchGroup = new BranchGroup();
Vector3d translationVector = new Vector3d(currentPartStartPoint);
TransformGroup currentTransformGroup = TransformerHelper.getTranslationTransformGroup(translationVector);
currentBranchGroup.addChild(currentTransformGroup);
currentTransformGroup.addChild(branchPartGroup);
previousTransformGroup.addChild(currentBranchGroup);
// set pointer for next round
currentPartStartPoint = branchPart3D.getEndPoint();
previousTransformGroup = currentTransformGroup;
}