Skocz do zawartości

Szybkie odpowiedzi na proste pytania. Blender Q&A


n-pigeon

Rekomendowane odpowiedzi

Na szczescie odwolywanie sie do istniejacych pluginów jest w blenderze bardzo łatwe, każdy z nich tworzy wlasny operator ktoremu mozna podac jego ustawienia. Taki skrypt moze miec kilka linijek kodu. Poproś na blender artists żeby ktos ci napisal cos takiego.

Odnośnik do komentarza
Udostępnij na innych stronach

Jestem baaardzo zielony w Blenderze i bardzo proszę o pomoc w prostej sprawie -

wchodzę w Materials i chcę dodać Glass BSDF, lecz gdy klikam NEW, zamiast TEGO mam TO.

 

Dzięki

 

edit: udało mi się rozwiązać, przestawiony rodzaj renderu.

Edytowane przez Hant
Odnośnik do komentarza
Udostępnij na innych stronach

Witam. Chciałbym w obrębie jednego panelu umieścić sobie w 2 boxach parametry dotyczące "Ray Visibility" dla zaznaczonego obiektu, a poniżej dotyczące aktywnego "World". Z obiektem mi się udało natomiast opcje odnośnie świata nie chcą się wyświetlić. Co może być nie tak?

 

Wglądówka:

 

lsvlUjo.png

 

 

       ob = context.object
       visibility = ob.cycles_visibility
       col = layout.column()

       box = col.box()
       box.label(text="Object Ray Visibility", icon='OBJECT_DATA')
       box.prop(visibility, "camera")
       box.prop(visibility, "diffuse")
       box.prop(visibility, "glossy")
       box.prop(visibility, "transmission")
       if ob.type != 'LAMP':
           box.prop(visibility, "shadow")


       col.separator()
       box = col.box()
       box.label(text="World Ray Visibility", icon='WORLD')

       world = context.world
       wovisibility = world.cycles_visibility
       row = box.row()
       row.prop(wovisibility, "camera")
       row.prop(wovisibility, "diffuse")
       row.prop(wovisibility, "glossy")
       row.prop(wovisibility, "transmission")

 

 

 

Dzięki..

Edytowane przez Nanoman
Odnośnik do komentarza
Udostępnij na innych stronach

Na szczescie odwolywanie sie do istniejacych pluginów jest w blenderze bardzo łatwe, każdy z nich tworzy wlasny operator ktoremu mozna podac jego ustawienia. Taki skrypt moze miec kilka linijek kodu. Poproś na blender artists żeby ktos ci napisal cos takiego.
w istocie jest bardzo łatwe sam dałem radę napisać gdyby ktoś potrzebował (trzba tylko włączyć plugin z exportemdxf bo domyślnie jest wyłączony):


fbxPathname = sys.argv[7]
axisFwd = sys.argv[8]
axisUp = sys.argv[9]



bpy.ops.export_scene.fbx(
   filepath=fbxPathname + ".fbx",
   axis_forward=axisFwd,
   axis_up=axisUp)

bpy.ops.export_scene.obj(
   filepath=fbxPathname + ".obj")

bpy.ops.export_scene.autodesk_3ds(
   filepath=fbxPathname + ".3ds",
   axis_forward=axisFwd,
   axis_up=axisUp)

bpy.ops.export.dxf(
   onlySelected=0,
   filepath=fbxPathname + ".dxf")

to powyżej trzeba zapisać do exportfbx.py

a w terminalu w linuksie trzeba otworzyć folder gdzie znajdują się pliki do exportu i wpisać

for i in `ls -1 *.blend`; do /home/mk/Programy/blender-2.71-linux-glibc211-x86_64/blender -b /home/mk/modele/$i --python "exportfbx.py" -- ModelName $i -Y Z; done

gdzie pierwsza ścieżka to lokalizacja blendera kolejna to miejsce gdzie są nasze pliki do exportu. (zapisany plik exportfbx.py też powinien być w tym folderze

Edytowane przez zagloowka
Odnośnik do komentarza
Udostępnij na innych stronach

Prośba o pomoc.

Potrzebuję wyrenderować w oddzielnych warstwach cień obiektu, cień rzucony przez obiekt i odbicie obiektu w podłożu. Potrzebuję warstw z kanałem alfa i np samym wyizolowanym cieniem lub odbiciem.

Edytowane przez kraas
Odnośnik do komentarza
Udostępnij na innych stronach

witam!

Na wstępie chciałbym podziękować Monio i jeszcze jednemu użytkownikowi którzy pomogli mi z copy rotation constraint na bodajże 280 stronie:P

jeszcze 2 szybkie pytania- mam armature, zrobilem pare obrotów, zapisałem plik w jakimś położeniu kości- nie wiem czy początkowe czy nie. Problem w tym że nawet jak ustawie kość do odpowiedniej pozycji- blender nie chce tego zapisać, i za kazdym razem musze to ustawiać.

Druga sprawa, przypisalem do obiektu szkielet, pozniej odparentowalem obiekt w celu poprawienia szkieletu. Teraz gdy znow parentuje with automatic weights, obiekt zawsze przesuwa sie trochę w dół i nie moge ustalić dokładnie właściwego położenia kości i obiektu.

Nawet jesli obiekt zrobię nowy- można coś z tym zrobić? - nie moge sobie poradzić.

z góry dzięki!

Odnośnik do komentarza
Udostępnij na innych stronach

Witam,

próbuję napisać proste makro do :

1. snap cursour to selection

2. add orientation (use=True) -; działa tylko bez opcji use=True

3. get out of edit mode

4.add empty

 

 

ale z poziomu skryptu nie działa mi większość prostych komend jak zwyły grab x o 3m.

Problem w tym że w momencie wywoływania skryptu kursor jest w oknie text, wiecie jak to obejść?

Odnośnik do komentarza
Udostępnij na innych stronach

Witam. Ja znowu potrzebuję pomocy w kodzie.

Swego czasu użytkownik BA napisał na moją prośbę skrypt, który oblicza całkowity rozmiar wszystkich zaznaczonych obiektów.

Plik ze scenką do uruchomienia można pobrać tutaj:

http://blenderartists.org/forum/attachment.php?attachmentid=318568&d=1404331888

 

Kod tworzy nowy panel w oknie "Properties" na zakładce "Object" i wygląda jak na poniższym obrazku.

I teraz nie chcę już chłopakowi głowy zawracać bo wspomagam się trochę translatorem i pewnie jakieś bzdury niekiedy wychodzą więc piszę tutaj. Dla mnie addon jest bardzo pomocny podczas tworzenia różnych konstrukcji opartych o profile aluminiowe i nie tylko.

Generalnie skrypt działa bardzo dobrze ale w obecnej wersji operator "custombutton1" nie jest rejestrowany wewnątrz blendera, a bardzo chciałbym przypisać sobie do niego skrót klawiszowy.

No i jeszcze kwestia checkboxa "Enable" nie jest on do niczego potrzebny a jego istnienie wynika z mojego niedogadania z autorem :(

 

Starałem się wzorować na innych skryptach i szablonach ale w dalszym ciągu nie mogę zarejestrować w blenderze tego operatora... Pomożecie? No i oczywiście może komuś z Was też się przyda to coś...

 

Dzięki

 

 

N67Z1ky.png

 

# ##### 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
# ##### END GPL LICENSE BLOCK #####

import bpy
from bpy.props import *
from mathutils import *
from math import *





# Ckeck Box Properties


bpy.types.Scene.MyCkeckbox1 = BoolProperty(
       name="Boolean", 
       description="True or False?")
bpy.context.scene['MyCkeckbox1'] = False



bl_info = {
   "name": "Scene selected ob Dim",
   "author": "Rickyblender",
   "version": (0, 1, 0),
   "blender": (2, 71, 0),
   "location": "View3D > Add > Mesh > scenedim",
   "description": "Scene selected ob Dim  ",
   "warning": "Date  1 July 2014",
   "wiki_url": " http://blenderartists.org/forum/showthread.php?341699-Dimensions-of-all-selected-objects "
               "",
   "category": "Add Mesh",
}


scd1=[0,0,0,0]


###

def scenedim1():


   global scd1

   minx = 0
   miny = 0
   minz = 0

   maxx = 0
   maxy = 0
   maxz = 0


   c1=0

   for o1 in bpy.context.selected_objects:

       if o1.name=="Camera" or o1.name=="Empty":
           pass

       else:

#            print ('ob=',o1.name)
#            print ()

           bounds = functions.getobjectBounds(o1)


           oxmin = bounds[0][0]
           oxmax = bounds[1][0]

           oymin = bounds[0][1]
           oymax = bounds[1][1]

           ozmin = bounds[0][2]
           ozmax = bounds[1][2]

           if  c1==0 :
               minx=oxmin
               miny=oymin
               minz=ozmin

               maxx=oxmax
               maxy=oymax
               maxz=ozmax

        # min 

           if oxmin                 minx = oxmin

           if oymin                 miny = oymin

           if ozmin                 minz = ozmin

       # max 

           if oxmax >= maxx:
               maxx = oxmax

           if oymax >= maxy:
               maxy = oymax

           if ozmax >= maxz:
               maxz = ozmax

       c1+=1


#    print ('x min =', minx , 'y min =', miny, 'z min =', minz  )
#    print ('x max =', maxx , 'y max =', maxy, 'z max =', maxz  )
#    print ()
#    print ('x min =', minx , 'x max =', maxx )
#    print ('y min =', miny , 'y max =', maxy )
#    print ('z min =', minz , 'z max =', maxz )
#    print ()

   widhtx=(maxx-minx)

   widhty=maxy-miny

   widhtz=maxz-minz


#    print ('Scene X Y Z Bounds : { ',widhtx, ' + ' ,widhty , ' + ', widhtz )

   scd=[widhtx ,widhty ,widhtz ,len(bpy.context.selected_objects) ]

   scd1= scd
#    print ('scd1=',scd1)

   return 

###

###

class ScenedimdPanel(bpy.types.Panel):

   """Creates a Panel in the Object properties window"""

   bl_label = "Scene-dim-panel"
   bl_idname = "OBJECT_PT_hello"
   bl_space_type = 'PROPERTIES'
   bl_region_type = 'WINDOW'
   bl_context = "object"


   @classmethod
   def poll(cls, context):
       obs=bpy.context.selected_objects
       return obs

   def draw(self, context):

       global scd1

       layout = self.layout
       scene = context.scene

       col = layout.column()
       col.prop(scene, "MyCkeckbox1", text = "Enable")

       if scene.MyCkeckbox1:
#            print ('checkbox  True')


#            obj = context.object
#            obs=bpy.context.selected_objects


#            dim1=scenedim1()

#            dx1=dim1[0]
#            dy1=dim1[1]
#            dz1=dim1[2]

           dx1=scd1[0]
           dy1=scd1[1]
           dz1=scd1[2]

           row = layout.row()
           row.label(text="Scene selected ob DIM", icon='WORLD_DATA')

#        row = layout.row()
#        row.label(text="Active object is: " + obj.name)
#        row = layout.row()
#        row.prop(obj, "name")

#        row = layout.row()
#        row.operator("mesh.primitive_cube_add")

           le1=scd1[3]
           row = layout.row()
           row.label(text="selected object is: " + str(le1))

#        unit = bpy.context.scene.unit_settings
           unit =bpy.context.scene.unit_settings.system
#        bpy.context.scene.unit_settings
#        print ('UnitSettings.system =', bpy.context.scene.unit_settings[0])
#        print ('unit=',unit)
   # unitsettings

           if unit=="METRIC":
   #            print ('Metric units system')
               m1=" mm"
               dx1=dx1*1000
               dy1=dy1*1000
               dz1=dz1*1000
           elif unit=="IMPERIAL":
   #            print ('IMPERIA units system')
               m1=" Feet"
           else:
   #            print ('BU units system')
               m1=" BU"



           ASTx = str("%.2f"%(dx1))+" X " + m1
           row = layout.row()
           row.label(text="X Dim = " + ASTx)
           ASTy = str("%.2f"%(dy1))+" Y " + m1
           row = layout.row()
           row.label(text="Y Dim = " + ASTy)
           ASTz = str("%.2f"%(dz1))+" Z " + m1
           row = layout.row()
           row.label(text="Z Dim =" + ASTz)




           row = layout.row()
           layout.operator("custom.button1")

       else:
           print ('checkbox Fake')




###



"""




"""

###

class functions():

   def getobjectBounds(ob):

       obminx = ob.location.x
       obminy = ob.location.y
       obminz = ob.location.z

       obmaxx = ob.location.x
       obmaxy = ob.location.y
       obmaxz = ob.location.z

       for vertex in ob.bound_box[:]:
           x = ob.location.x + (ob.scale.x * vertex[0])
           y = ob.location.y + (ob.scale.y * vertex[1])
           z = ob.location.z + (ob.scale.z * vertex[2])

           if x                 obminx = x
           if y                 obminy = y
           if z                 obminz = z

           if x >= obmaxx:
               obmaxx = x
           if y >= obmaxy:
               obmaxy = y
           if z >= obmaxz:
               obmaxz = z

       boundsmin = [obminx,obminy,obminz]
       boundsmax = [obmaxx,obmaxy,obmaxz] 

       bounds = [boundsmin,boundsmax]

#        print (' ob.name=', ob.name)
#        print ('bound min =', boundsmin,' boundsmax =', boundsmax )
#        print ()

       return bounds

###
####





class custombutton1(bpy.types.Operator):
   bl_idname = "custom.button1"
   bl_label = "Do Calculations"
   __doc__ = "Simple Custom Button"

   def invoke(self, context, event):
                                                   # when the button is press it prints this to the log / Console
       scenedim1()
       print("Custom Button1  Calculate scene dim")
       return{'FINISHED'}    


###





###





def register():
   bpy.utils.register_module(__name__)


def unregister():
   bpy.utils.unregister_module(__name__)



if __name__ == "__main__":
   register()

Edytowane przez Nanoman
Odnośnik do komentarza
Udostępnij na innych stronach

mielnicki:

z text editora z menu template -> python wybierz simple operator

do metody main albo execute wrzuc swoje komendy

pozmieniaj nazwe klasy w odpowiednich miejscach i bl_idname bl_label

wywal test call

zarejestruj operator alt + P

wyszukaj w 3d view za pomocą spacji "My first operator"

poniżej przykład

import bpy
# zarejestruj operator alt + P 
# wyszukaj w 3d view za pomocą spacji "My first operator"

class MySimpleOperator(bpy.types.Operator):
   """Tooltip"""
   bl_idname = "object.my_operator"
   bl_label = "My First Operator"

   @classmethod
   def poll(cls, context):
       return context.active_object is not None

   def execute(self, context):
       bpy.ops.view3d.snap_cursor_to_selected()
       bpy.ops.transform.create_orientation(name="snap2", use=True)
       bpy.ops.object.editmode_toggle()
       bpy.ops.object.empty_add(type='PLAIN_AXES')
       return {'FINISHED'}

def register():
   bpy.utils.register_class(MySimpleOperator)

def unregister():
   bpy.utils.unregister_class(MySimpleOperator)

if __name__ == "__main__":
   register()
Odnośnik do komentarza
Udostępnij na innych stronach

NanoMan:

wywaliłem ten enable, i zrobilem rejestracje bpy.ops.custom.button1()

tylko nie wiem czemu mi sie panel odswieza dopiero po najechaniu :)

# ##### 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
# ##### END GPL LICENSE BLOCK #####

import bpy
from bpy.props import *
from mathutils import *
from math import *

# Ckeck Box Properties

bl_info = {
   "name": "Scene selected ob Dim",
   "author": "Rickyblender",
   "version": (0, 1, 0),
   "blender": (2, 71, 0),
   "location": "View3D > Add > Mesh > scenedim",
   "description": "Scene selected ob Dim  ",
   "warning": "Date  1 July 2014",
   "wiki_url": " http://blenderartists.org/forum/showthread.php?341699-Dimensions-of-all-selected-objects "
               "",
   "category": "Add Mesh",
}

scd1=[0,0,0,0]

###

def scenedim1():
   global scd1

   minx = 0
   miny = 0
   minz = 0

   maxx = 0
   maxy = 0
   maxz = 0

   c1=0

   for o1 in bpy.context.selected_objects:
       if o1.name=="Camera" or o1.name=="Empty":
           pass
       else:
#            print ('ob=',o1.name)
#            print ()

           bounds = functions.getobjectBounds(o1)

           oxmin = bounds[0][0]
           oxmax = bounds[1][0]

           oymin = bounds[0][1]
           oymax = bounds[1][1]

           ozmin = bounds[0][2]
           ozmax = bounds[1][2]

           if  c1==0 :
               minx=oxmin
               miny=oymin
               minz=ozmin

               maxx=oxmax
               maxy=oymax
               maxz=ozmax
        # min 
           if oxmin                 minx = oxmin
           if oymin                 miny = oymin
           if ozmin                 minz = ozmin
       # max 
           if oxmax >= maxx:
               maxx = oxmax
           if oymax >= maxy:
               maxy = oymax
           if ozmax >= maxz:
               maxz = ozmax
       c1+=1

   widhtx=(maxx-minx)
   widhty=maxy-miny
   widhtz=maxz-minz

   scd=[widhtx ,widhty ,widhtz ,len(bpy.context.selected_objects) ]

   scd1= scd
   return 

###

###

class ScenedimdPanel(bpy.types.Panel):
   """Creates a Panel in the Object properties window"""
   bl_label = "Scene-dim-panel"
   bl_idname = "OBJECT_PT_hello"
   bl_space_type = 'PROPERTIES'
   bl_region_type = 'WINDOW'
   bl_context = "object"

   @classmethod
   def poll(cls, context):
       obs=bpy.context.selected_objects
       return obs

   def draw(self, context):
       global scd1

       layout = self.layout
       scene = context.scene

       col = layout.column()

       dx1=scd1[0]
       dy1=scd1[1]
       dz1=scd1[2]

       row = layout.row()
       row.label(text="Scene selected ob DIM", icon='WORLD_DATA')

       le1=scd1[3]
       row = layout.row()
       row.label(text="selected object is: " + str(le1))

       unit =bpy.context.scene.unit_settings.system
   # unitsettings

       if unit=="METRIC":
           m1=" mm"
           dx1=dx1*1000
           dy1=dy1*1000
           dz1=dz1*1000
       elif unit=="IMPERIAL":
           m1=" Feet"
       else:
           m1=" BU"

       ASTx = str("%.2f"%(dx1))+" X " + m1
       row = layout.row()
       row.label(text="X Dim = " + ASTx)
       ASTy = str("%.2f"%(dy1))+" Y " + m1
       row = layout.row()
       row.label(text="Y Dim = " + ASTy)
       ASTz = str("%.2f"%(dz1))+" Z " + m1
       row = layout.row()
       row.label(text="Z Dim =" + ASTz)

       row = layout.row()
       layout.operator("custom.button1")

###

###

class functions():

   def getobjectBounds(ob):

       obminx = ob.location.x
       obminy = ob.location.y
       obminz = ob.location.z

       obmaxx = ob.location.x
       obmaxy = ob.location.y
       obmaxz = ob.location.z

       for vertex in ob.bound_box[:]:
           x = ob.location.x + (ob.scale.x * vertex[0])
           y = ob.location.y + (ob.scale.y * vertex[1])
           z = ob.location.z + (ob.scale.z * vertex[2])

           if x                 obminx = x
           if y                 obminy = y
           if z                 obminz = z

           if x >= obmaxx:
               obmaxx = x
           if y >= obmaxy:
               obmaxy = y
           if z >= obmaxz:
               obmaxz = z

       boundsmin = [obminx,obminy,obminz]
       boundsmax = [obmaxx,obmaxy,obmaxz] 

       bounds = [boundsmin,boundsmax]

       return bounds

###
####

class Custombutton1(bpy.types.Operator):
   bl_idname = "custom.button1"
   bl_label = "Do Calculations"
   __doc__ = "Simple Custom Button"


   def execute(self, context):
   # when the button is press it prints this to the log / Console
       scenedim1()
       print("Custom Button1  Calculate scene dim")
       return{'FINISHED'}    

###

###

def register():
   bpy.utils.register_module(__name__)
#    bpy.utils.register_class(Custombutton1)

def unregister():
   bpy.utils.unregister_module(__name__)
#   bpy.utils.unregister_class(Custombutton1)

if __name__ == "__main__":
   register()

Odnośnik do komentarza
Udostępnij na innych stronach

@Szczuro ! mistrzu ! działa, taki krótki kod... myślałem że będzie trudniej... w dodatku można wklejać komendy prosto z info bara... genialne... makra so easy.... dodałem jeszcze align to orientation i włala wyrzuca empty wyrównane z krawędzią !!!

Powinien istnieć addon do generowania takich makro... wpisujemy w toolbarze nazwę, mamy przycisk nagraj który zapisuje wszystkie komendy w tym fragmencie " def execute(self, context):" po zakończeniu nagrania zapisywałby plik i odpalał skrypt :)

Gdybym ogarniał blenderowego pythona to bym sobie zrobił takowy :)

 

Jeszcze raz wielkie dzięki...

Odnośnik do komentarza
Udostępnij na innych stronach

@Nanoman

Zainstaluj addon i wklep pod spacją "Do Calculations"

edit:

w input -> 3d View -> Object Mode dodaj nowy skrót klawiszowy dla custom.button1 (np. ALT + L)

 

No tak... ja przez cały czas wpisywałem w polu wyszukiwania zadeklarowaną nazwę operatora a nie przycisku dlatego nie mogłem znaleźć :(

 

...tylko nie wiem czemu mi sie panel odswieza dopiero po najechaniu :)...

 

@szczuro co do odświeżania faktycznie wartości aktualizują się dopiero po najechaniu kursorem - w pierwotnej wersji skrypt nie miał przycisku tylko zwracał wartości w trybie auto update, jednak przy większej ilości obiektów za bardzo zamulało więc poprosiłem gościa, aby dorobił przycisk, więc może jakaś część kodu ma wpływ na ten stan rzeczy...

Edytowane przez Nanoman
Odnośnik do komentarza
Udostępnij na innych stronach

Piodew - Pliki blend i to co wyprodukują jest wyłącznie twoją własnością i możesz z nimi zrobić co chcesz, w tym również sprzedawać, dowolnie licencjonować.

 

Jedyne odstępstwo dotyczy gier zrobionych przy pomocy blender game engine. Nie można ich sprzedawać bo zawierają w sobie fragmenty kodu blendera.

Odnośnik do komentarza
Udostępnij na innych stronach

ale sprzedawać czy wykorzystywać komercyjnie można ;P

Trzeba tylko znaleźć model biznesowy który by pozwalał nie przejmować się źródłami, albo przejmować się w małym stopniu. Może się mylę ale coś w stylu Free to Play, (content chyba nie jest objęty GPL) do tego odseparowana strona serwerowa i zarabianie na mikropłatnościch. Potencjalny rozpowszechniacz nie miałby dużo pożytku z samego kodu, a przynajmniej musiałby się troche narobić aby wyszło coś sensownego.

Odnośnik do komentarza
Udostępnij na innych stronach

Teoria teorii. Musisz jakoś do binarki (GPL) wczytać inne pliki na zamkniętej licencji. Da się to zrobić przez zaszyfrowane pośrednie formaty wymiany danych. Widziałem już takie próby, ładownianie gry zajmowało po kilka minut na level.

 

Serio, kto będzie się pierdzielił w coś takiego skoro za mniej kasy/czasu kupi sobie unity które przebija BGE w dokładnie wszystkim? BGE to spalony temat, jego potencjał skończył się dekadę temu.

Odnośnik do komentarza
Udostępnij na innych stronach

oezu ludzie banał... Abonament tak jak jest ze steamem.. chcesz zagrać musisz kupić konto do gry i tyle... a sama gra jest rozdawana za darmo.

 

- - - Połączono posty - - -

 

Teoria teorii. Musisz jakoś do binarki (GPL) wczytać inne pliki na zamkniętej licencji. Da się to zrobić przez zaszyfrowane pośrednie formaty wymiany danych. Widziałem już takie próby, ładownianie gry zajmowało po kilka minut na level.

 

Serio, kto będzie się pierdzielił w coś takiego skoro za mniej kasy/czasu kupi sobie unity które przebija BGE w dokładnie wszystkim? BGE to spalony temat, jego potencjał skończył się dekadę temu.

 

 

temat się skończył kiedy sony zmieniło zdanie i stwierdziło że blender game engine nie będzie działał na playstation.

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

Mam pytanie dotyczące hair particle.

A więc tak chcę zrobić

1. sierść - kolorową coś jak pasy tygrysa czy cętki geparda

2. sierść razem z kolcami - i tutaj czy opłaca się tworzyć kolce w oparciu o hair system (ustawiając odpowiednie parametry) czy bardziej stworzyć oddzielny objekt i "rozrzucić" go poprzez particle po grzbiecie ?

Proszę chociaż o hasło (nazwę opcji która za to odpowiada - nik6t mi tu wykładu przecież nie będzie robił) czego szukać w tutkach na YT, google czy innych stronach bo pod hasłem particle to różne rzeczy wyskakują

 

Nie związane z particlami: gdy robię retopo to w addonie meshlint jest opcja 6+edge tool. No właśnie jeśli pojawiają mi się vertexy połączony z 6 edgami to jakiś wielki błąd czy raczej przerost formy nad treścią i się nie przejmować (poza tym nie mam ani tris, ngonów) ? Zwróciłem na to uwagę dopiero po zainstalowaniu tego addona :P

 

 

 

Dzięki

Odnośnik do komentarza
Udostępnij na innych stronach

Hej,

jak używać project paint? Mam wersję 2.71, wiem że od którejś wersji kompletnie się to zmieniło i nie mogę znaleźć informacji na ten temat. Konkretnie interesuje mnie malowanie teksturą na warstwach. Z góry dziękuje.

Odnośnik do komentarza
Udostępnij na innych stronach

Takie szybkie pytanie.

Obraz na białym tle.

Nakładamy na plane.

Robimy mix Diffuse i Transparent z Fac w postaci w/w obrazu.

Plane jest niewidoczny tam gdzie było białe tło, ale dookoła została cienka biała linia.

 

Czy i w jaki sposób można w blenderze w jakiś prosty sposób zlikwidować tą linię?

Pomogło nieco RGB Curves, ale tylko dlatego, że oprócz tła nic białego na obrazie nie ma.

Da się czy prościej w programie graficznym zamiast białego tła zostawić kanał alpha?

Odnośnik do komentarza
Udostępnij na innych stronach

Czyli w blenderze się nie da?

To, że w ten sposób można osiągnąć żądany rezultat to akurat wiem. Moim zdaniem nie ma za bardzo sensu robić dwóch oddzielnych obrazów. Lepiej po prostu kanał alpha zapisać w pliku z obrazem.

 

Tak czy inaczej dzięki za podjętą próbę pomocy.

 

I jeszcze jedno pytanie.

Chciałbym zrobić blister z tabletkami.

Widziałbym to tak:

Górna warstwa - przeźroczysty materiał z wypukłościami, pod którymi będą tabletki.

Dolna warstwa - srebrny materiał z fakturą w postaci gęstych wklęsłych kropek. Jak zrobić żeby wyglądało to tak jak na wielu zdjęciach tutaj:

https://www.google.pl/search?q=pills&client=firefox-beta&hs=va0&rls=org.mozilla:pl:official&channel=sb&source=lnms&tbm=isch&sa=X&ei=mDccVJnuNMK_ygOzhoKYAg&ved=0CAgQ_AUoAQ&biw=1542&bih=986&dpr=0.9#rls=org.mozilla:pl:official&channel=sb&tbm=isch&q=pills+package&imgdii=_

Edytowane przez 860lacov
Odnośnik do komentarza
Udostępnij na innych stronach

1.

Normal oczywiście działa. Dzięki.

Tak dla dalszej wiedzy.

Jak kontrolować wysokość/siłę normal map?

Mi przychodzi do głowy MixRGB i miksowanie z kolorem czarnym lub Match node z mnożeniem przez jakąś wartość.

Da się inaczej/lepiej?

 

2.

Jak można zrobić wyświetlacz ciekłokrystaliczny taki jak w jest w budzikach czy prostych urządzeniach elektrycznych?

Odnośnik do komentarza
Udostępnij na innych stronach

Dwa pytania odnosnie swiatel:

 

Musze wczytac konkretne wartosci IES dla lamp. Uzywam tego pluginu:

http://blenderartists.org/forum/showthread.php?276063-IES-Lamps-to-Cycles

Swiatla ladnie sie wczytuja z plikow *ies dostarczonych przez producenta lamp, ale sa w cholere jasne a mam w scenie sporo lamp.. Wiem ze przy imporcie mozna wybrac jak cieple swiatlo to ma byc, ale to tez zmienia kolor tego swiatla przy nizszych wartosciach robiac ze swiatla bialego zolte. Natezenie jest zablokowane - wie ktos moze jak i czy mozna zmienic natezenie swiatla wczytanego z pliku *.ies?

 

Pytanie drugie - musze zrobic biegnacy przy scianie "led strip" - cos takiego:

http://goo.gl/dS8718

Jakis pomysl jak zrobic zeby bylo widac pojedyncze diody? (oczywiscie bez wrzucania w scene kilku tysiecy malych lampek :D)

Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki Monio! Mniej wiecej kumam - jak przyblizysz co miales na mysli mowiac "Zapętlasz obrazkową texe która steruje mixem transparent / emit. " to bede wiedzial 100%. Bo myslalem o samym emicie ale na razie to tylko "cos mi swita". Bede wdzieczny BARDZO za bardziej szegolowe wyjasnienie - do jutra mam deadline ;)

Tak to jest jak noob sie zabiera za zlecenie ale dla mnie nie ma lepszej okazji jak stres deadline'a zeby sie czegos nauczyc...

Odnośnik do komentarza
Udostępnij na innych stronach

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