Shared viewport camera
This commit is contained in:
parent
6907f62831
commit
1ec41c2a81
|
@ -45,7 +45,10 @@ class SpaceArmory extends Trait {
|
|||
function update() {
|
||||
|
||||
var keyboard = Input.getKeyboard();
|
||||
if (keyboard.started("esc")) trace('__arm|quit');
|
||||
if (keyboard.started("esc")) {
|
||||
var viewStr = iron.Scene.active.camera != null ? '|' + iron.Scene.active.camera.V.toArray() : '';
|
||||
trace('__arm|quit' + viewStr);
|
||||
}
|
||||
|
||||
// var mouse = Input.getMouse();
|
||||
// if (mouse.started("right")) {
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Translating operators from/to Armory player
|
||||
from mathutils import Matrix
|
||||
import bpy
|
||||
import arm.utils
|
||||
import arm.make_state as state
|
||||
try:
|
||||
import barmory
|
||||
except ImportError:
|
||||
|
@ -14,6 +16,13 @@ def parse_operator(text):
|
|||
if cmd[0] == '__arm':
|
||||
if cmd[1] == 'quit':
|
||||
bpy.ops.arm.space_stop('EXEC_DEFAULT')
|
||||
# Copy view matrix
|
||||
if len(cmd) > 2 and bpy.data.worlds['Arm'].arm_play_camera == 'Viewport Shared':
|
||||
arstr = cmd[2][1:-1] # Remove []
|
||||
ar = arstr.split(',')
|
||||
mat = [float(i) for i in ar]
|
||||
set_view_mat(mat)
|
||||
|
||||
elif cmd[1] == 'setx':
|
||||
bpy.context.scene.objects[cmd[2]].location.x = float(cmd[3])
|
||||
elif cmd[1] == 'select':
|
||||
|
@ -42,3 +51,28 @@ def send_operator(op):
|
|||
barmory.call_js(js_source)
|
||||
return True
|
||||
return False
|
||||
|
||||
def set_view_mat(mat):
|
||||
if state.play_area == None:
|
||||
return
|
||||
for space in state.play_area.spaces:
|
||||
if space.type == 'VIEW_3D':
|
||||
m = Matrix()
|
||||
m[0][0] = mat[0]
|
||||
m[0][1] = mat[1]
|
||||
m[0][2] = mat[2]
|
||||
m[0][3] = mat[3]
|
||||
m[1][0] = mat[4]
|
||||
m[1][1] = mat[5]
|
||||
m[1][2] = mat[6]
|
||||
m[1][3] = mat[7]
|
||||
m[2][0] = mat[8]
|
||||
m[2][1] = mat[9]
|
||||
m[2][2] = mat[10]
|
||||
m[2][3] = mat[11]
|
||||
m[3][0] = mat[12]
|
||||
m[3][1] = mat[13]
|
||||
m[3][2] = mat[14]
|
||||
m[3][3] = mat[15]
|
||||
space.region_3d.view_matrix = m
|
||||
break
|
||||
|
|
|
@ -1180,22 +1180,18 @@ class ArmoryExporter:
|
|||
o['particle_refs'].append(pref)
|
||||
|
||||
def get_viewport_view_matrix(self):
|
||||
screen = bpy.context.window.screen
|
||||
for area in screen.areas:
|
||||
if area.type == 'VIEW_3D':
|
||||
for space in area.spaces:
|
||||
if space.type == 'VIEW_3D':
|
||||
return space.region_3d.view_matrix
|
||||
if self.play_area != None:
|
||||
for space in self.play_area.spaces:
|
||||
if space.type == 'VIEW_3D':
|
||||
return space.region_3d.view_matrix
|
||||
return None
|
||||
|
||||
def get_viewport_projection_matrix(self):
|
||||
screen = bpy.context.window.screen
|
||||
for area in screen.areas:
|
||||
if area.type == 'VIEW_3D':
|
||||
for space in area.spaces:
|
||||
if space.type == 'VIEW_3D':
|
||||
# return space.region_3d.perspective_matrix # pesp = window * view
|
||||
return space.region_3d.window_matrix, space.region_3d.is_perspective
|
||||
if self.play_area != None:
|
||||
for space in self.play_area.spaces:
|
||||
if space.type == 'VIEW_3D':
|
||||
# return space.region_3d.perspective_matrix # pesp = window * view
|
||||
return space.region_3d.window_matrix, space.region_3d.is_perspective
|
||||
return None, False
|
||||
|
||||
def get_viewport_panels_w(self):
|
||||
|
@ -2508,11 +2504,12 @@ class ArmoryExporter:
|
|||
self.output['mesh_datas'] = [];
|
||||
self.do_export_mesh(objectRef, scene)
|
||||
|
||||
def execute(self, context, filepath, scene=None, write_capture_info=False):
|
||||
def execute(self, context, filepath, scene=None, write_capture_info=False, play_area=None):
|
||||
profile_time = time.time()
|
||||
|
||||
self.output = {}
|
||||
self.filepath = filepath
|
||||
self.play_area = play_area
|
||||
|
||||
self.scene = context.scene if scene == None else scene
|
||||
originalFrame = self.scene.frame_current
|
||||
|
|
|
@ -96,7 +96,7 @@ def export_data(fp, sdk_path, is_play=False, is_publish=False, in_viewport=False
|
|||
if scene.arm_export:
|
||||
ext = '.zip' if (scene.arm_compress and is_publish) else '.arm'
|
||||
asset_path = arm.utils.build_dir() + '/compiled/Assets/' + arm.utils.safestr(scene.name) + ext
|
||||
exporter.execute(bpy.context, asset_path, scene=scene, write_capture_info=state.is_render_anim)
|
||||
exporter.execute(bpy.context, asset_path, scene=scene, write_capture_info=state.is_render_anim, play_area=state.play_area)
|
||||
if ArmoryExporter.export_physics:
|
||||
physics_found = True
|
||||
if ArmoryExporter.export_navigation:
|
||||
|
|
|
@ -87,7 +87,7 @@ def init_properties():
|
|||
bpy.types.World.arm_play_camera = EnumProperty(
|
||||
items=[('Scene', 'Scene', 'Scene'),
|
||||
('Viewport', 'Viewport', 'Viewport'),
|
||||
# ('Viewport Shared', 'Viewport Shared', 'Viewport Shared')
|
||||
('Viewport Shared', 'Viewport Shared', 'Viewport Shared')
|
||||
],
|
||||
name="Camera", description="Viewport camera", default='Scene')
|
||||
bpy.types.World.arm_play_console = BoolProperty(name="Debug Console", description="Show inspector in player", default=False)
|
||||
|
|
Loading…
Reference in a new issue