का उपयोग करके ब्लेंडर में व्यूपोर्ट कोण बदलें, मैं यह पता लगाने की कोशिश कर रहा हूं कि पाइथन का उपयोग करके ब्लेंडर में व्यूपोर्ट कोण बदलने का कोई तरीका है या नहीं। मुझे परिणाम चाहिए जैसे आप नंबर पर 1, 3, या 7 दबाएंगे। तकती।पाइथन
किसी भी मदद
का उपयोग करके ब्लेंडर में व्यूपोर्ट कोण बदलें, मैं यह पता लगाने की कोशिश कर रहा हूं कि पाइथन का उपयोग करके ब्लेंडर में व्यूपोर्ट कोण बदलने का कोई तरीका है या नहीं। मुझे परिणाम चाहिए जैसे आप नंबर पर 1, 3, या 7 दबाएंगे। तकती।पाइथन
किसी भी मदद
सबसे पहले करने के लिए धन्यवाद, ध्यान दें कि आप एक ही बार में खुला कई 3D दृश्य हो सकते हैं कि, और प्रत्येक का अपना व्यूपोर्ट कोण, परिप्रेक्ष्य/ऑर्थो सेटिंग्स आदि हो सकता है तो अपनी स्क्रिप्ट करना होगा उन सभी 3 डी विचारों को देखें जो मौजूद हो सकते हैं (जो कोई भी नहीं हो सकता है) और यह तय करें कि यह किस पर प्रभाव डाल रहा है।
bpy.data ऑब्जेक्ट के साथ प्रारंभ करें, जिसमें window_managers विशेषता है। इस संग्रह में हमेशा एक तत्व होता है। हालांकि, एक या अधिक खुले windows हो सकते हैं। प्रत्येक विंडो में screen है, जिसे एक या अधिक areas में विभाजित किया गया है। तो आपको "VIEW_3D" के स्पेस type के साथ सभी क्षेत्रों के माध्यम से खोजना होगा। और उसके बाद इस क्षेत्र के spaces के माध्यम से "VIEW_3D" प्रकार के साथ शिकार करें। ऐसी जगह उपclass SpaceView3D होगी। इसमें region_3d प्रकार RegionView3D की विशेषता होगी। और आखिरकार, इस ऑब्जेक्ट में बदले में view_matrix नामक एक विशेषता है, जो Matrix टाइप करने का मान लेती है जिसे आप प्राप्त या सेट कर सकते हैं।
यह सब मिला? :)
एक बार जब आप सही 'दृश्य' स्थित है, तो आप संशोधित कर सकते हैं:
view.spaces[0].region_3d.view_matrix
view.spaces[0].region_3d.view_rotation
ध्यान दें कि region_3d.view_location 'look_at' लक्ष्य, नहीं कैमरे के स्थान है, यदि आप कैमरे की स्थिति (जहां तक मुझे पता है) को स्थानांतरित करना चाहते हैं तो आपको view_matrix को सीधे संशोधित करना होगा, लेकिन आप view_rotation का उपयोग करके रोटेशन को आसानी से समायोजित कर सकते हैं। आप शायद हालांकि एक वैध चौका उत्पन्न करने के लिए इस पढ़ने के लिए की आवश्यकता होगी: http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
शायद कुछ इस तरह उपयोगी हो सकता है:
class Utils(object):
def __init__(self, context):
self.context = context
@property
def views(self):
""" Returns the set of 3D views.
"""
rtn = []
for a in self.context.window.screen.areas:
if a.type == 'VIEW_3D':
rtn.append(a)
return rtn
def camera(self, view):
""" Return position, rotation data about a given view for the first space attached to it """
look_at = view.spaces[0].region_3d.view_location
matrix = view.spaces[0].region_3d.view_matrix
camera_pos = self.camera_position(matrix)
rotation = view.spaces[0].region_3d.view_rotation
return look_at, camera_pos, rotation
def camera_position(self, matrix):
""" From 4x4 matrix, calculate camera location """
t = (matrix[0][3], matrix[1][3], matrix[2][3])
r = (
(matrix[0][0], matrix[0][1], matrix[0][2]),
(matrix[1][0], matrix[1][1], matrix[1][2]),
(matrix[2][0], matrix[2][1], matrix[2][2])
)
rp = (
(-r[0][0], -r[1][0], -r[2][0]),
(-r[0][1], -r[1][1], -r[2][1]),
(-r[0][2], -r[1][2], -r[2][2])
)
output = (
rp[0][0] * t[0] + rp[0][1] * t[1] + rp[0][2] * t[2],
rp[1][0] * t[0] + rp[1][1] * t[1] + rp[1][2] * t[2],
rp[2][0] * t[0] + rp[2][1] * t[1] + rp[2][2] * t[2],
)
return output
ब्लेंडर का कौन सा संस्करण? – Blender
['bpy.ops.view3d.viewnumpad'] के बारे में क्या है (http://www.blender.org/documentation/blender_python_api_2_69_0/bpy.ops.view3d.html?highlight=numpad#bpy.ops.view3d.viewnumpad)? – gandalf3
यह भी देखें http://blender.stackexchange.com/a/678/2762 –