Skocz do zawartości

Szybkie odpowiedzi na proste pytania. Blender Q&A


Rekomendowane odpowiedzi

Napisano

Witam

Czy jest jakiś "magiczny" przycisk albo addon który zamienił by mi całą bryłę w dynamesh automatycznie i zagęścił? Coś takiego jak w zetce plugin Dynamesh Master. W tej chwili to włączam dyntopo w sculpt mode i maluję na bardzo niskim strength i używam multiresolution. Jest inny sposób ?

Napisano
w dyntopo jest do wyboru opcja stalego subdiva i wtedy pojawia sie opcja fill czyjakostak i mozesz caly obiekt wypelnic tym stalym subdivem

Extra uwzględnia nawet maskę.

Napisano

Witam, importowałem postać z makehuman, mogłem ją pozycjonować, dodałem jej ubranie, pozycjonować nie mogę, chodzi o parents? Przypisuje się dziecko do kości, w tym wypadku ubranie? Próbowałem postać połączyć z ubraniem (CTL+J) nie dało rezultatu, pozdrawiam :)

Napisano

Witam ponownie, wrócę do drugiego pytania, pelerynę powiedzmy zrzucam przy pomocy fizyki na obiekt (postać) podczas animacji, pewną klatkę chce zostawić kluczową by była podstawą do dalszych działań nie inicjując żadnych animacji na tym etapie, co zrobić, pozdrawiam :)

Napisano

Witam, zrobiłem gościa z kilkoma warstwami ubrań (kolcza, ubranie, pasek, peleryna), jak w oknie 3D włączam material lub rendered, jest wszystko ładnie, gdy włączam F12 renderuje mi wszystko oprócz jednej warstwy ubrania, spróbowałem umieścić tą warstwe ubrania na osobnej warstwie z światłem by wyrenderować, bez rezultatu. Wie ktoś gdzie mam szukać? Usunąłem teksturę i materiał, nadałem ponownie i dalej nic :/

Napisano

Zobacz w outlinerze czy masz zaznaczona ikonke z prawej strony. Taka kamerke bodaj. A jezeli to nie to, zobacz czy masz zaznaczone wszystke render layers w properties/scene

Napisano

oki, sprawdzę, mam następne pytanie, mam kości, gościa i oczy, ciało parentuje automatycznie do kości i wszystko gra, ale co z oczami, nie są powiązane, wiem że te dwie kości trzeba sparentować do bone, by była rotacja bez deformacji, ale jak?

Napisano

może mi ktoś wytłumaczy co robię źle przy wypalaniu normali w blendku. Raz wychodzi mi dobrze innym razem się psuje jak na obrazku. Z góry dzięki:)

normalki.jpg

Napisano

hej mam pytanie jak poprawnie wyeksportować w blenderze obiekt z kilkoma materiałami żeby w Substance Painter dało się wypalić ID map? Póki co przy wypalaniu dostaje białą teksturę.

Napisano

Witam, pinning przyczepił peleryne w okolicy szyji, ale pozostał na tej wysokości podczas gdy postać wstała :/

Zrobiłem jedną rzecz i wszystko gra już :) scena, czyli pomieszczenie wraz z podłogą miała również włączoną symulacje collision, wyłączyłem ją.

Peleryna oddziałuje tylko na postać i "leży" na niej nawet gdy postać wstaje. Pytanie unikać dwóch objektów z collision, czy jest jakiś myk?

Napisano
Witam, pinning przyczepił peleryne w okolicy szyji, ale pozostał na tej wysokości podczas gdy postać wstała :/

Prze Modyfikatorem Cloth musisz dać Armature gdzie vertexy które "maja pinning w okolicy szyji" bedą przyczepione do kości szyi ;

Peleryna oddziałuje tylko na postać i "leży" na niej nawet gdy postać wstaje. Pytanie unikać dwóch objektów z collision, czy jest jakiś myk?

Sprawdź numer końcowej klatki w cloth catche, czy jest taka sama jak końcowa klatka animacji.

 

Doc-26-Manual-Physics-Cloth-Cache-Panel.png

Napisano

Cześć,

 

jestem laikiem robiącym czasem animacje i mam problemy z cieniami (self shadows), które prawdopodobnie występują tylko po to aby obiekt wyglądał na 3D. Dla całego elementu wyłączyłem cas/receive shadows, źródłem światła jest lampka omni, która ma powodować, że tło na środku jest jaśniejsze niż po bokach. Jednak na butelce (zdjęcie) powoduje to zbyt duże zaczernienie z jednej strony. Czy da się te cienie wewnętrzne na butelce w jakiś sposób zmniejszyć lub całkowicie wyłączyć. Nie chciałbym dodawać dodatkowego źródła światła itp.

 

http://i66.tinypic.com/2rrs0ap.jpg

Napisano (edytowane)

Hej,

 

taki nooberski problem.

Animowałem sobie i chciałem trochę zmodyfikować długość piosenki w audio i wtedy jakoś zniknęły mi wszystkie keye.. Animacja gra normalnie, tylko nie widać zapisanych klatek. Próbowałem alt+h, klikać na oślep itp. co się robi w takich przypadkach...

Jak to naprawić?

 

Edit: w NLA editor wyłączyłem tryb edycji.

Edytowane przez michalo
Napisano

Witam, jest możliwość zaparentowania dwóch obiektów w animacji w wybranych klatkach?

Np. animacja trwa od 0 do 240 klatki i chciałbym by między 80 a 120 klatką, obiekty były powiązane ze sobą.

Pozdrawiam, K

Napisano

Łap

# ##### BEGIN GPL LICENSE BLOCK #####
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

# 

bl_info = {
   "name": "Dynamic Parent",
   "author": "Roman Volodin, [email protected]",
   "version": (0, 50),
   "blender": (2, 72, 0),
   "location": "View3D > Tool Panel",
   "description": "Allows to create and disable an animated ChildOf constraint",
   "warning": "The addon still in progress! Be careful!",
   "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Animation/Dynamic_Parent",
   "tracker_url": "",
   "category": "Animation"}

import bpy
import mathutils

# dp_keyframe_insert_*** functions  
def dp_keyframe_insert_obj(obj):
   obj.keyframe_insert(data_path="location")
   if obj.rotation_mode == 'QUATERNION':
       obj.keyframe_insert(data_path="rotation_quaternion")
   elif obj.rotation_mode == 'AXIS_ANGLE':
       obj.keyframe_insert(data_path="rotation_axis_angle")
   else:
       obj.keyframe_insert(data_path="rotation_euler")
   obj.keyframe_insert(data_path="scale")

def dp_keyframe_insert_pbone(arm, pbone):
   arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].location')
   if pbone.rotation_mode == 'QUATERNION':
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].rotation_quaternion')
   elif pbone.rotation_mode == 'AXIS_ANGLE':
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].rotation_axis_angel')
   else:
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].rotation_euler')
   arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].scale') 

def dp_create_dynamic_parent_obj(op):
   obj = bpy.context.active_object
   scn = bpy.context.scene
   list_selected_obj = bpy.context.selected_objects

   if len(list_selected_obj) == 2:
       i = list_selected_obj.index(obj)
       list_selected_obj.pop(i)
       parent_obj = list_selected_obj[0]

       dp_keyframe_insert_obj(obj)
       bpy.ops.object.constraint_add_with_targets(type='CHILD_OF')
       last_constraint = obj.constraints[-1]

       if parent_obj.type == 'ARMATURE':
           last_constraint.subtarget = parent_obj.data.bones.active.name
           last_constraint.name = "DP_"+last_constraint.target.name+"."+last_constraint.subtarget
       else:
           last_constraint.name = "DP_"+last_constraint.target.name

       #bpy.ops.constraint.childof_set_inverse(constraint=""+last_constraint.name+"", owner='OBJECT')
       C = bpy.context.copy()
       C["constraint"] = last_constraint
       bpy.ops.constraint.childof_set_inverse(C, constraint=last_constraint.name, owner='OBJECT')

       current_frame = scn.frame_current
       scn.frame_current = current_frame-1
       obj.constraints[last_constraint.name].influence = 0
       obj.keyframe_insert(data_path='constraints["'+last_constraint.name+'"].influence')

       scn.frame_current = current_frame
       obj.constraints[last_constraint.name].influence = 1
       obj.keyframe_insert(data_path='constraints["'+last_constraint.name+'"].influence')

       for ob in list_selected_obj:
           ob.select = False

       obj.select = True
   else:
       op.report({'ERROR'}, "Two objects must be selected")

def dp_create_dynamic_parent_pbone(op):
   arm = bpy.context.active_object
   pbone = bpy.context.active_pose_bone
   scn = bpy.context.scene
   list_selected_obj = bpy.context.selected_objects

   if len(list_selected_obj) == 2 or len(list_selected_obj) == 1:
       if len(list_selected_obj) == 2:
           i = list_selected_obj.index(arm)
           list_selected_obj.pop(i)
           parent_obj = list_selected_obj[0]
           if parent_obj.type == 'ARMATURE':
               parent_obj_pbone = parent_obj.data.bones.active
       else:
           parent_obj = arm
           selected_bones = bpy.context.selected_pose_bones
           selected_bones.remove(pbone)
           parent_obj_pbone = selected_bones[0]

#        debuginfo = '''
#        DEBUG INFO:
#        obj = {}
#        pbone = {}
#        parent = {}
#        parent_bone = {}
#        '''
#        print(debuginfo.format(arm, pbone, parent_obj, parent_obj_pbone))

       dp_keyframe_insert_pbone(arm, pbone)
       bpy.ops.pose.constraint_add_with_targets(type='CHILD_OF')
       last_constraint = pbone.constraints[-1]

       if parent_obj.type == 'ARMATURE':
           last_constraint.subtarget = parent_obj_pbone.name
           last_constraint.name = "DP_"+last_constraint.target.name+"."+last_constraint.subtarget
       else:
           last_constraint.name = "DP_"+last_constraint.target.name

       #bpy.ops.constraint.childof_set_inverse(constraint=""+last_constraint.name+"", owner='BONE')
       C = bpy.context.copy()
       C["constraint"] = last_constraint
       bpy.ops.constraint.childof_set_inverse(C, constraint=last_constraint.name, owner='BONE')

       current_frame = scn.frame_current
       scn.frame_current = current_frame-1
       pbone.constraints[last_constraint.name].influence = 0
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].constraints["'+last_constraint.name+'"].influence')

       scn.frame_current = current_frame
       pbone.constraints[last_constraint.name].influence = 1
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].constraints["'+last_constraint.name+'"].influence')  
   else:
       op.report({'ERROR'}, "Two objects must be selected")

def dp_disable_dynamic_parent_obj(op):
   obj = bpy.context.active_object
   scn = bpy.context.scene

   if len(obj.constraints) == 0:
       op.report({'ERROR'}, "Object has no constraint")
   else:
       last_constraint = obj.constraints[-1]

       if "DP_" in last_constraint.name:
           current_frame = scn.frame_current
           scn.frame_current = current_frame-1
           obj.constraints[last_constraint.name].influence = 1
           obj.keyframe_insert(data_path='constraints["'+last_constraint.name+'"].influence')

           scn.frame_current = current_frame
           obj.constraints[last_constraint.name].influence = 0
           obj.keyframe_insert(data_path='constraints["'+last_constraint.name+'"].influence')

           loc, rot, scale = obj.matrix_world.decompose()
           rot_euler = rot.to_euler()

           current_frame = scn.frame_current
           scn.frame_current = current_frame - 1
           dp_keyframe_insert_obj(obj)

           scn.frame_current = current_frame
           obj.location = loc
           obj.rotation_euler = rot_euler
           obj.scale = scale
           dp_keyframe_insert_obj(obj)
       else:
           op.report({'ERROR'}, "Object has no Dynamic Parent constraint")

def dp_disable_dynamic_parent_pbone(op):
   arm = bpy.context.active_object
   pbone = bpy.context.active_pose_bone
   scn = bpy.context.scene

   if len(pbone.constraints) == 0:
       op.report({'ERROR'}, "Bone has no constraint")
   else:
       last_constraint = pbone.constraints[-1]

       current_frame = scn.frame_current
       scn.frame_current = current_frame - 1
       pbone.constraints[last_constraint.name].influence = 1
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].constraints["'+last_constraint.name+'"].influence')

       scn.frame_current = current_frame
       pbone.constraints[last_constraint.name].influence = 0
       arm.keyframe_insert(data_path='pose.bones["'+pbone.name+'"].constraints["'+last_constraint.name+'"].influence')

       final_matrix = pbone.matrix * arm.matrix_world

       current_frame = scn.frame_current
       scn.frame_current = current_frame - 1
       dp_keyframe_insert_pbone(arm, pbone)

       scn.frame_current = current_frame
       pbone.matrix = final_matrix
       dp_keyframe_insert_pbone(arm, pbone)

def dp_clear(obj, pbone):
   dp_curves = []
   dp_keys = []
   for fcurve in obj.animation_data.action.fcurves:
       if "constraints" in fcurve.data_path and "DP_" in fcurve.data_path:
           dp_curves.append(fcurve)

   for f in dp_curves:
       for key in f.keyframe_points:
           dp_keys.append(key.co[0])

   dp_keys = list(set(dp_keys))
   dp_keys.sort()

   for fcurve in obj.animation_data.action.fcurves[:]:
       # Removing constraints fcurves
       if fcurve.data_path.startswith("constraints") and "DP_" in fcurve.data_path:
           obj.animation_data.action.fcurves.remove(fcurve)
       # Removing keys for loc, rot, scale fcurves
       else:
           for frame in dp_keys:
               for key in fcurve.keyframe_points[:]:
                   if key.co[0] == frame:
                       fcurve.keyframe_points.remove(key)
           if not fcurve.keyframe_points:
               obj.animation_data.action.fcurves.remove(fcurve)


   # Removing constraints
   if pbone:
       obj = pbone
   for const in obj.constraints[:]:
       if const.name.startswith("DP_"):
           obj.constraints.remove(const)



class DpCreateConstraint(bpy.types.Operator):
   """Create a new animated Child Of constraint"""
   bl_idname = "dp.create"
   bl_label = "Create Constraint"
   bl_options = {'REGISTER', 'UNDO'}

   def execute(self, context):
       obj = bpy.context.active_object

       if obj.type == 'ARMATURE':
           obj = bpy.context.active_pose_bone

           if len(obj.constraints) == 0:
               dp_create_dynamic_parent_pbone(self)
           else:
               if "DP_" in obj.constraints[-1].name and obj.constraints[-1].influence == 1:
                   dp_disable_dynamic_parent_pbone(self)
               dp_create_dynamic_parent_pbone(self)
       else:        
           if len(obj.constraints) == 0:
               dp_create_dynamic_parent_obj(self)
           else:
               if "DP_" in obj.constraints[-1].name and obj.constraints[-1].influence == 1:
                   dp_disable_dynamic_parent_obj(self)
               dp_create_dynamic_parent_obj(self)

       return {'FINISHED'}

class DpDisableConstraint(bpy.types.Operator):
   """Disable the current animated Child Of constraint"""
   bl_idname = "dp.disable"
   bl_label = "Disable Constraint"
   bl_options = {'REGISTER', 'UNDO'}

   def execute(self, context):
       obj = bpy.context.active_object
       if obj.type == 'ARMATURE':
           dp_disable_dynamic_parent_pbone(self)
       else:
           dp_disable_dynamic_parent_obj(self)
       return {'FINISHED'}

class DpClear(bpy.types.Operator):
   """Clear Dynamic Parent constraints"""
   bl_idname = "dp.clear"
   bl_label = "Clear Dynamic Parent"
   bl_options = {'REGISTER', 'UNDO'}

   def execute(self, context):
       pbone = None
       obj = bpy.context.active_object
       if obj.type == 'ARMATURE':
           pbone = bpy.context.active_pose_bone

       dp_clear(obj, pbone)

       return {'FINISHED'}

class DpBake(bpy.types.Operator):
   """Bake Dynamic Parent animation"""
   bl_idname = "dp.bake"
   bl_label = "Bake Dynamic Parent"
   bl_options = {'REGISTER', 'UNDO'}

   def execute(self, context):
       obj = bpy.context.active_object
       scn = bpy.context.scene

       if obj.type == 'ARMATURE':
           obj = bpy.context.active_pose_bone
           bpy.ops.nla.bake(frame_start=scn.frame_start, 
                            frame_end=scn.frame_end, step=1, 
                            only_selected=True, visual_keying=False,
                            clear_constraints=False, clear_parents=False, 
                            bake_types={'POSE'})
           # Removing constraints
           for const in obj.constraints[:]:
               if const.name.startswith("DP_"):
                   obj.constraints.remove(const)
       else:
           bpy.ops.nla.bake(frame_start=scn.frame_start,
                            frame_end=scn.frame_end, step=1, 
                            only_selected=True, visual_keying=False,
                            clear_constraints=False, clear_parents=False, 
                            bake_types={'OBJECT'})
           # Removing constraints
           for const in obj.constraints[:]:
               if const.name.startswith("DP_"):
                   obj.constraints.remove(const)

       return {'FINISHED'}

class DpClearMenu(bpy.types.Menu):
   """Clear or bake Dynamic Parent constraints"""
   bl_label = "Clear Dynamic Parent?"
   bl_idname = "dp.clear_menu"

   def draw(self, context):
       layout = self.layout
       layout.operator("dp.clear", text="Clear", icon="X")
       layout.operator("dp.bake", text="Bake and clear", icon="REC")

class DpUI(bpy.types.Panel):
   """User interface for Dynamic Parent addon"""
   bl_category = "Dynamic Parent"
   bl_label = "Dynamic Parent"
   bl_idname = "dp.ui"
   bl_space_type = "VIEW_3D"
   bl_region_type = "TOOLS"

   def draw(self, context):
       layout = self.layout
       col = layout.column(align=True)
       col.operator("dp.create", text="Create", icon="KEY_HLT")
       col.operator("dp.disable", text="Disable", icon="KEY_DEHLT")
       #col.operator("dp.clear", text="Clear", icon="X")
       #col.operator("wm.call_menu", text="Clear", icon="RIGHTARROW_THIN").name="dp.clear_menu"
       col.menu("dp.clear_menu", text="Clear")

def register():
   bpy.utils.register_class(DpCreateConstraint)
   bpy.utils.register_class(DpDisableConstraint)
   bpy.utils.register_class(DpClear)
   bpy.utils.register_class(DpBake)
   bpy.utils.register_class(DpClearMenu)
   bpy.utils.register_class(DpUI)

   pass 

def unregister():
   bpy.utils.unregister_class(DpCreateConstraint)
   bpy.utils.unregister_class(DpDisableConstraint)
   bpy.utils.unregister_class(DpClear)
   bpy.utils.unregister_class(DpBake)
   bpy.utils.unregister_class(DpClearMenu)
   bpy.utils.unregister_class(DpUI)

   pass 

if __name__ == "__main__": 
   register()

Napisano

Pomóżcie plax. Jak włączyć taką opcję, żeby pokazywało mi parametry obiektu takie jak długości boków, powierzchnia płaszczyzn? wiem, ze gdzieś to jest - widziałem kiedyś na jakimś tutku. - teraz potrzebuje i nie mogę tego znaleźć. Pozdrawiam

Napisano

Być może powinienem zadać to pytanie w całkiem innym dziale ( jesli tak -to z góry przepraszam ) ale

ostatnio doznałem niemałego szoku, kiedy w firmie mi powiedzieli, żebym nie instalował Blendera ani żadnego darmowego softu, bo potem urząd skarbowy robi problemy. Jak to mi zostało wyjaśnione wielkość podatku uzależniona jest od wielkości zarobku , a ten znów się szacuje na podstawie kwoty wydanej na oprogramowanie….A skoro Blender jest darmowy , nie da się ustalić zarobku wystukanego na tym sofcie i potem cyrki z urzędem skarbowym…

Co prawda używają tam Inscape -także darmowy, ale dostali go w komplecie z jakimś zakupionym urządzeniem ( chyba Laser-coś pokroju CNC)…więc tutaj z ustaleniem wygenerowanego zarobku i podatkiem nie będzie problemu, bo określi się go na podstawie ceny tego lasera...Paranoja…nie sądziłem że firmy w Polsce mają aż tak pod górkę…Jak obejść te absurdalne przepisy ?

Napisano
Być może powinienem zadać to pytanie w całkiem innym dziale ( jesli tak -to z góry przepraszam ) ale

ostatnio doznałem niemałego szoku, kiedy w firmie mi powiedzieli, żebym nie instalował Blendera ani żadnego darmowego softu, bo potem urząd skarbowy robi problemy. Jak to mi zostało wyjaśnione wielkość podatku uzależniona jest od wielkości zarobku , a ten znów się szacuje na podstawie kwoty wydanej na oprogramowanie….A skoro Blender jest darmowy , nie da się ustalić zarobku wystukanego na tym sofcie i potem cyrki z urzędem skarbowym…

Co prawda używają tam Inscape -także darmowy, ale dostali go w komplecie z jakimś zakupionym urządzeniem ( chyba Laser-coś pokroju CNC)…więc tutaj z ustaleniem wygenerowanego zarobku i podatkiem nie będzie problemu, bo określi się go na podstawie ceny tego lasera...Paranoja…nie sądziłem że firmy w Polsce mają aż tak pod górkę…Jak obejść te absurdalne przepisy ?

 

mnie to śmierdzi jakimś bullshitem to jest tak absurdalne że.. mają jakieś konkretne przepisy pod to? paragrafy czy coś..? jakoś istnieje pierdyliard studiów z softem opensource i nie ma takiego problemu.. myślę że oni coś kombinują mają jakoś dziwnie chowane taxy, maskowane. czy bóg wie co.

Napisano

Mam pewnie dość banalne pytanie; po kilkunastu godzinach renderingu i podrasowaniu obrazka w Node Editorze postanowiłem zapisać wszystkie warstwy w postaci pliku. Pomijając fakt, że mogę zrobić to ręcznie dla każdego wykorzystanego przeze mnie passu, czy istnieje możliwość zapisu obrazka w postaci .exr'a ? W nodach nie miałem File Outputu i jego podpinanie teraz, po zakończeniu renderu, nie przynosi rezultatu (po przeliczeniu Compositu nie są generowane żadne pliki). Czy muszę ustawić nody ponownie i dopiero wówczas znowu włączyć render, czy też na obecnym etapie jestem w stanie zapisać warstwy do pliku?

Napisano

tam gdzie mozesz patrzeć obrazki wybierasz render result.. composed. i spróbuj zapistać do exr.. ale chyba będzie sklejone all niestety. exr z passami to chyba tylko przez output.. ale... zrób tak zapisz wszystkie passy ręcznie do EXR. i potem wczytaj je wszystkie w compozytorze i F12 i będziesz miał :D

Napisano

Hmmm, ale File Output jako node? Nie generuje mi żadnego pliku i obawiam się, że wymagałoby to ponownego przerenderowania sceny. Ręczny zapis jako .exr też nie tworzy pliku z passami.

Napisano
Ręczny zapis jako .exr też nie tworzy pliku z passami.
Pytanie w czym go otwierasz. W innej instancji blendera? Adobe np nie wspiera Multilayer EXR, trzeba się posiłkować pluginami.
Napisano
Hmmm, ale File Output jako node? Nie generuje mi żadnego pliku i obawiam się, że wymagałoby to ponownego przerenderowania sceny. Ręczny zapis jako .exr też nie tworzy pliku z passami.

 

dlatego zapisz pasy do EXR. poszczegolnych i potem je wczytaj i po prostu przerenderuj sam kompozytor tzn przeklej całe compo do nowego blenda etc. i daj output do multilayer exr.

Napisano

cześć, próbuje zrobić efekt meksykańskiej fali. Zamiast ludzi animuje w rotacji sześcian. Chciałbym żeby w momencie najechania okręgu sześcian obracał się o 90* i po odjechaniu wracał do pierwotnie formy(rotacja 0) miej więcej przedstawiłem to na http://imgur.com/a/y3hJS

 

udał mi się zrobić animacje prostym driverem ale nie potrafię zablokować animacji tylko do 90*

uQbNGkb.jpg

 

https://dl.dropboxusercontent.com/u/4261448/rotacja.blend

 

Jak by ktoś miał jakiś pomysł, ew jakie hasła googlować to byłbym bardzo wdzięczny.

Napisano

Może trochę Cię to naprowadzi. Ogólnie sprawa wygląda tak, że podczas zmiany dystansu między obiektami na rotację, trzeba pamiętać, że wszystko jest na radianach. Przykładowo, dystans równy 1 po transformacji na rotację jest równy 1 radian czyli ok. 57,2958°.

 

Użyłem takiego wzoru: var+1.5708 if var

Na początku trzeba dodać do var 1.5708, żeby zacząć rotację o 90° później. Wklej sobie do Twojego drivera, to zobaczysz o co chodzi. Jedyny problem to odległość oddziaływania okręgu na sześciany. Jedyne co przychodzi mi teraz do głowy, to zmniejszyć wszystkie obiekty, dzięki temu wszystko będzie się odbywać na mniejszych dystansach.

 

Może ma ktoś lepszą metodę?

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności