function FigHandle = Create_3GFigure(block, worldfile)
% the figure doesn't exist, create one
FigHandle = figure('Units', 'pixels', ...
'Position', [100 100 800 600], ...
'Color', [0.314 0.314 0.314], ...
'Name', BlockFigureTitle(block), ...
'Tag', 'octavia_graphs_fig', ...
'NumberTitle', 'off', ...
'IntegerHandle', 'off', ...
'Toolbar', 'none', ...
'DeleteFcn', 'octavia_graphs([], [], [], ''DeleteFigure'', [], [])');
% store the block handle in the figure UserData
ud.Block = block;
% the x-axis (time) range corresponds to the model Stop time
stoptime = str2double(get_param(bdroot, 'StopTime'));
% create the first graph in the figure
ud.G1_Axes = axes('Position', [0.05 0.1 0.28 0.25], ...
'XGrid', 'on', ...
'YGrid', 'on', ...
'Color', 'k', ...
'XColor', 'w', ...
'YColor', 'w', ...
'XLim', [0 stoptime]);
set(ud.G1_Axes, 'Title', title('Speed [m/s]', 'Color', 'w'));
ud.G1_Line = line(0, 0, 'EraseMode', 'None', 'Color', 'y', 'LineStyle', '-');
ud.XData = [];
ud.Y1Data = [];
% create the second graph in the figure
ud.G2_Axes = axes('Position', [0.37 0.1 0.28 0.25], ...
'XGrid', 'on', ...
'YGrid', 'on', ...
'Color', 'k', ...
'XColor', 'w', ...
'YColor', 'w', ...
'XLim', [0 stoptime]);
set(ud.G2_Axes, 'Title', title('Longitudal acceleration [m/s^2]', 'Color', 'w'));
ud.G2_Line = line(0, 0, 'EraseMode', 'None', 'Color', 'y', 'LineStyle', '-');
ud.XData = [];
ud.Y2Data = [];
% create the third graph in the figure
ud.G3_Axes = axes('Position', [0.69 0.1 0.28 0.25], ...
'XGrid', 'on', ...
'YGrid', 'on', ...
'Color', 'k', ...
'XColor', 'w', ...
'YColor', 'w', ...
'XLim', [0 stoptime]);
set(ud.G3_Axes, 'Title', title('Lateral acceleration [m/s^2]', 'Color', 'w'));
ud.G3_Line = line(0, 0, 'EraseMode', 'None', 'Color', 'y', 'LineStyle', '-');
ud.XData = [];
ud.Y3Data = [];
% open vrworld if not open already
vr_world = vrworld(worldfile);
if ~isopen(vr_world)
open(vr_world);
end
ud.vr_world = vr_world;
% create two canvases in the figure
vr.canvas(vr_world, 'Parent', FigHandle, ...
'Units', 'normalized', ...
'Position', [0.03 0.45 0.45 0.53]);
c2 = vr.canvas(vr_world, 'Parent', FigHandle, ...
'Units', 'normalized', ...
'Position', [0.52 0.45 0.45 0.53]);
set(c2, 'Viewpoint', 'View_Driver_Car1');
% Associate the figure with the block, and set the figure's UserData.
Set_3GFigure(block, FigHandle);
set(FigHandle, 'UserData', ud, 'HandleVisibility', 'callback');
% end Create_3GFigure