kopia lustrzana https://github.com/jameshball/osci-render
rodzic
f6d0e1f4b7
commit
41dd24a67c
|
@ -1,3 +1,7 @@
|
||||||
|
- 1.22.1
|
||||||
|
- Gracefully handle disconnects from both Blender and osci-render to prevent restarts!
|
||||||
|
|
||||||
|
|
||||||
- 1.22.0
|
- 1.22.0
|
||||||
- Add support for externally rendered lines!
|
- Add support for externally rendered lines!
|
||||||
- This means there is now Blender support!
|
- This means there is now Blender support!
|
||||||
|
|
Plik binarny nie jest wyświetlany.
|
@ -14,6 +14,7 @@ import bpy
|
||||||
import bmesh
|
import bmesh
|
||||||
import socket
|
import socket
|
||||||
import json
|
import json
|
||||||
|
import atexit
|
||||||
from bpy.app.handlers import persistent
|
from bpy.app.handlers import persistent
|
||||||
|
|
||||||
HOST = "localhost"
|
HOST = "localhost"
|
||||||
|
@ -50,11 +51,13 @@ class osci_render_connect(bpy.types.Operator):
|
||||||
if sock is None:
|
if sock is None:
|
||||||
try:
|
try:
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
sock.settimeout(1)
|
||||||
sock.connect((HOST, PORT))
|
sock.connect((HOST, PORT))
|
||||||
send_scene_to_osci_render(bpy.context.scene)
|
send_scene_to_osci_render(bpy.context.scene)
|
||||||
except OSError as exp:
|
except socket.error as exp:
|
||||||
sock.close()
|
|
||||||
sock = None
|
sock = None
|
||||||
|
self.report({"WARNING"}, "Failed to connect to osci-render - make sure it is running first!")
|
||||||
|
return {"CANCELLED"}
|
||||||
|
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
@ -64,17 +67,20 @@ class osci_render_close(bpy.types.Operator):
|
||||||
bl_idname = "render.osci_render_close"
|
bl_idname = "render.osci_render_close"
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
global sock
|
close_osci_render()
|
||||||
if sock is not None:
|
|
||||||
sock.send("CLOSE\n".encode('utf-8'))
|
|
||||||
sock.close()
|
|
||||||
sock = None
|
|
||||||
|
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
def is_cyclic(spline):
|
@persistent
|
||||||
return spline.use_cyclic_u or spline.use_cyclic_v
|
def close_osci_render():
|
||||||
|
global sock
|
||||||
|
if sock is not None:
|
||||||
|
try:
|
||||||
|
sock.send("CLOSE\n".encode('utf-8'))
|
||||||
|
sock.close()
|
||||||
|
except socket.error as exp:
|
||||||
|
sock = None
|
||||||
|
|
||||||
|
|
||||||
def append_matrix(object_info, obj):
|
def append_matrix(object_info, obj):
|
||||||
|
@ -85,6 +91,7 @@ def append_matrix(object_info, obj):
|
||||||
|
|
||||||
@persistent
|
@persistent
|
||||||
def send_scene_to_osci_render(scene):
|
def send_scene_to_osci_render(scene):
|
||||||
|
global sock
|
||||||
engine_info = {"objects": []}
|
engine_info = {"objects": []}
|
||||||
|
|
||||||
if sock is not None:
|
if sock is not None:
|
||||||
|
@ -107,7 +114,10 @@ def send_scene_to_osci_render(scene):
|
||||||
engine_info["focalLength"] = -0.05 * bpy.data.cameras[0].lens
|
engine_info["focalLength"] = -0.05 * bpy.data.cameras[0].lens
|
||||||
|
|
||||||
json_str = json.dumps(engine_info, separators=(',', ':')) + '\n'
|
json_str = json.dumps(engine_info, separators=(',', ':')) + '\n'
|
||||||
|
try:
|
||||||
sock.sendall(json_str.encode('utf-8'))
|
sock.sendall(json_str.encode('utf-8'))
|
||||||
|
except socket.error as exp:
|
||||||
|
sock = None
|
||||||
|
|
||||||
|
|
||||||
operations = [OBJECT_PT_osci_render_settings, osci_render_connect, osci_render_close]
|
operations = [OBJECT_PT_osci_render_settings, osci_render_connect, osci_render_close]
|
||||||
|
@ -116,6 +126,7 @@ operations = [OBJECT_PT_osci_render_settings, osci_render_connect, osci_render_c
|
||||||
def register():
|
def register():
|
||||||
bpy.app.handlers.frame_change_pre.append(send_scene_to_osci_render)
|
bpy.app.handlers.frame_change_pre.append(send_scene_to_osci_render)
|
||||||
bpy.app.handlers.depsgraph_update_post.append(send_scene_to_osci_render)
|
bpy.app.handlers.depsgraph_update_post.append(send_scene_to_osci_render)
|
||||||
|
atexit.register(close_osci_render)
|
||||||
for operation in operations:
|
for operation in operations:
|
||||||
bpy.utils.register_class(operation)
|
bpy.utils.register_class(operation)
|
||||||
|
|
||||||
|
@ -123,6 +134,7 @@ def register():
|
||||||
def unregister():
|
def unregister():
|
||||||
bpy.app.handlers.frame_change_pre.remove(send_scene_to_osci_render)
|
bpy.app.handlers.frame_change_pre.remove(send_scene_to_osci_render)
|
||||||
bpy.app.handlers.depsgraph_update_post.remove(send_scene_to_osci_render)
|
bpy.app.handlers.depsgraph_update_post.remove(send_scene_to_osci_render)
|
||||||
|
atexit.unregister(close_osci_render)
|
||||||
for operation in reversed(operations):
|
for operation in reversed(operations):
|
||||||
bpy.utils.unregister_class(operation)
|
bpy.utils.unregister_class(operation)
|
||||||
|
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<groupId>sh.ball</groupId>
|
<groupId>sh.ball</groupId>
|
||||||
<artifactId>osci-render</artifactId>
|
<artifactId>osci-render</artifactId>
|
||||||
<version>1.22.0</version>
|
<version>1.22.1</version>
|
||||||
|
|
||||||
<name>osci-render</name>
|
<name>osci-render</name>
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ public class ObjectServer implements Runnable {
|
||||||
BufferedReader clientReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
BufferedReader clientReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||||
while (socket.isConnected()) {
|
while (socket.isConnected()) {
|
||||||
String json = clientReader.readLine();
|
String json = clientReader.readLine();
|
||||||
if (json.equals("CLOSE")) {
|
if (json == null || json.equals("CLOSE")) {
|
||||||
socket.close();
|
socket.close();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Ładowanie…
Reference in New Issue