diff options
author | Miika Hamalainen <blender@miikah.org> | 2011-06-27 12:11:05 +0400 |
---|---|---|
committer | Miika Hamalainen <blender@miikah.org> | 2011-06-27 12:11:05 +0400 |
commit | c896fcae7963fb35124ef3fefe0f12679228fa39 (patch) | |
tree | f4435bd39a36228a71c9142e4c26bacd482683f3 /release | |
parent | cb12648656fc001e8c4c6d00df73e52d452f8787 (diff) | |
parent | 93bb6238e0c6b7ea008776f4e1c3958ef5382c09 (diff) |
Merge with trunk r37849
Diffstat (limited to 'release')
24 files changed, 120 insertions, 54 deletions
diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png Binary files differindex cad2bc5f06c..d6ccdb5b733 100644 --- a/release/datafiles/splash.png +++ b/release/datafiles/splash.png diff --git a/release/scripts/modules/bpy_extras/image_utils.py b/release/scripts/modules/bpy_extras/image_utils.py index f45f9c6f225..551940b26e2 100644 --- a/release/scripts/modules/bpy_extras/image_utils.py +++ b/release/scripts/modules/bpy_extras/image_utils.py @@ -22,6 +22,7 @@ __all__ = ( "load_image", ) + # limited replacement for BPyImage.comprehensiveImageLoad def load_image(imagepath, dirname="", diff --git a/release/scripts/modules/bpy_extras/mesh_utils.py b/release/scripts/modules/bpy_extras/mesh_utils.py index b6d8a1fcf16..2062fe4485f 100644 --- a/release/scripts/modules/bpy_extras/mesh_utils.py +++ b/release/scripts/modules/bpy_extras/mesh_utils.py @@ -27,6 +27,7 @@ __all__ = ( "ngon_tesselate", ) + def mesh_linked_faces(mesh): """ Splits the mesh into connected faces, use this for seperating cubes from @@ -267,6 +268,7 @@ def ngon_tesselate(from_data, indices, fix_loops=True): fix_loops: If this is enabled polylines that use loops to make multiple polylines are delt with correctly. ''' + from mathutils.geometry import tesselate_polygon from mathutils import Vector vector_to_tuple = Vector.to_tuple diff --git a/release/scripts/modules/bpy_extras/view3d_utils.py b/release/scripts/modules/bpy_extras/view3d_utils.py index f2f2e53240b..01ac543aec7 100644 --- a/release/scripts/modules/bpy_extras/view3d_utils.py +++ b/release/scripts/modules/bpy_extras/view3d_utils.py @@ -25,6 +25,7 @@ __all__ = ( "location_3d_to_region_2d", ) + def region_2d_to_vector_3d(region, rv3d, coord): """ Return a direction vector from the viewport at the spesific 2d region @@ -48,7 +49,7 @@ def region_2d_to_vector_3d(region, rv3d, coord): out = Vector(((2.0 * coord[0] / region.width) - 1.0, (2.0 * coord[1] / region.height) - 1.0, -0.5 - )) + )) w = (out[0] * persinv[0][3]) + \ (out[1] * persinv[1][3]) + \ diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 3c1b454e72e..eaa7563c757 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -20,7 +20,6 @@ from _bpy import types as bpy_types import _bpy -from mathutils import Vector StructRNA = bpy_types.Struct.__bases__[0] StructMetaPropGroup = _bpy.StructMetaPropGroup @@ -144,18 +143,21 @@ class _GenericBone: def x_axis(self): """ Vector pointing down the x-axis of the bone. """ + from mathutils import Vector return Vector((1.0, 0.0, 0.0)) * self.matrix.to_3x3() @property def y_axis(self): """ Vector pointing down the x-axis of the bone. """ + from mathutils import Vector return Vector((0.0, 1.0, 0.0)) * self.matrix.to_3x3() @property def z_axis(self): """ Vector pointing down the x-axis of the bone. """ + from mathutils import Vector return Vector((0.0, 0.0, 1.0)) * self.matrix.to_3x3() @property diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 9311987e2e7..b0fb3b66d0a 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -111,12 +111,16 @@ def draw(layout, context, context_member, property_type, use_edit=True): continue row = layout.row() - convert_to_pyobject = getattr(val, "convert_to_pyobject", None) + to_dict = getattr(val, "to_dict", None) + to_list = getattr(val, "to_list", None) val_orig = val - if convert_to_pyobject: - val_draw = val = val.convert_to_pyobject() - val_draw = str(val_draw) + if to_dict: + val = to_dict() + val_draw = str(val) + elif to_list: + val = to_list() + val_draw = str(val) else: val_draw = val @@ -131,7 +135,7 @@ def draw(layout, context, context_member, property_type, use_edit=True): row.label(text=key) # explicit exception for arrays - if convert_to_pyobject and not hasattr(val_orig, "len"): + if to_dict or to_list: row.label(text=val_draw) else: if key in rna_properties: diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py index 89802d7ba5c..996b38ae571 100644 --- a/release/scripts/startup/bl_operators/mesh.py +++ b/release/scripts/startup/bl_operators/mesh.py @@ -152,7 +152,6 @@ class MeshMirrorUV(bpy.types.Operator): if j is not None: fmap[i] = j - done = [False] * len(faces) for i, j in fmap.items(): if not fuvsel[i] or not fuvsel[j]: @@ -170,10 +169,10 @@ class MeshMirrorUV(bpy.types.Operator): v1 = faces[j].vertices[:] v2 = [vmap[k] for k in faces[i].vertices[:]] - for k in range(len(uv1)): - k_map = v1.index(v2[k]) - uv1[k].x = - (uv2[k_map].x - 0.5) + 0.5 - uv1[k].y = uv2[k_map].y + if len(v1) == len(v2): + for k in range(len(v1)): + k_map = v1.index(v2[k]) + uv1[k].xy = - (uv2[k_map].x - 0.5) + 0.5, uv2[k_map].y if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) diff --git a/release/scripts/startup/bl_operators/nla.py b/release/scripts/startup/bl_operators/nla.py index 7cbdaa3ddbf..469e9015e62 100644 --- a/release/scripts/startup/bl_operators/nla.py +++ b/release/scripts/startup/bl_operators/nla.py @@ -103,7 +103,7 @@ def bake(frame_start, # ------------------------------------------------------------------------- # Collect transformations - + # could speed this up by applying steps here too... for f in frame_range: scene.frame_set(f) diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index 2ecca8ab168..a8bb3227b3c 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -244,6 +244,7 @@ class QuickExplode(bpy.types.Operator): self.frame_end = self.frame_start + self.frame_duration return self.execute(context) + def obj_bb_minmax(obj, min_co, max_co): for i in range(0, 8): bb_vec = Vector(obj.bound_box[i]) * obj.matrix_world diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py index 4f5b1d8b233..3e1ce621ec2 100644 --- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py +++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py @@ -16,7 +16,7 @@ # # ##### END GPL LICENSE BLOCK ##### -# <pep8 compliant> +# TODO <pep8 compliant> from mathutils import Matrix, Vector, geometry import bpy @@ -812,21 +812,25 @@ def main(context, island_margin, projection_limit): global RotMatStepRotation main_consts() -#XXX objects= bpy.data.scenes.active.objects - objects = context.selected_editable_objects - + # TODO, all selected meshes + ''' + # objects = context.selected_editable_objects + objects = [] # we can will tag them later. obList = [ob for ob in objects if ob.type == 'MESH'] # Face select object may not be selected. -#XXX ob = objects.active - ob= objects[0] + ob = context.active_object if ob and (not ob.select) and ob.type == 'MESH': # Add to the list obList =[ob] del objects + ''' + + # quick workaround + obList = [ob for ob in [context.active_object] if ob and ob.type == 'MESH'] if not obList: raise('error, no selected mesh objects') diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index fcc30ecbb4b..629a48d5750 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -462,7 +462,7 @@ class WM_OT_context_modal_mouse(bpy.types.Operator): '''Adjust arbitrary values with mouse input''' bl_idname = "wm.context_modal_mouse" bl_label = "Context Modal Mouse" - bl_options = {'INTERNAL'} + bl_options = {'GRAB_POINTER', 'BLOCKING', 'INTERNAL'} data_path_iter = StringProperty(description="The data path relative to the context, must point to an iterable.") data_path_item = StringProperty(description="The data path from each iterable to the value (int or float)") diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py index 11a129377e8..00d8d08852e 100644 --- a/release/scripts/startup/bl_ui/properties_data_curve.py +++ b/release/scripts/startup/bl_ui/properties_data_curve.py @@ -113,13 +113,25 @@ class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel): sub.prop(curve, "use_fill_back") col.prop(curve, "use_fill_deform", text="Fill Deformed") - col.label(text="Textures:") - col.prop(curve, "use_uv_as_generated") - col.prop(curve, "use_auto_texspace") - + +class DATA_PT_curve_texture_space(CurveButtonsPanel, bpy.types.Panel): + bl_label = "Texture Space" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + + def draw(self, context): + layout = self.layout + + ob = context.object + curve = context.curve + + row = layout.row() + row.prop(curve, "use_auto_texspace") + row.prop(curve, "use_uv_as_generated") + row = layout.row() - row.column().prop(curve, "texspace_location") - row.column().prop(curve, "texspace_size") + row.column().prop(curve, "texspace_location", text="Location") + row.column().prop(curve, "texspace_size", text="Size") class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel): diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index e2c88413177..8c966825aee 100644 --- a/release/scripts/startup/bl_ui/properties_data_mesh.py +++ b/release/scripts/startup/bl_ui/properties_data_mesh.py @@ -118,6 +118,7 @@ class DATA_PT_texture_space(MeshButtonsPanel, bpy.types.Panel): row.column().prop(mesh, "texspace_location", text="Location") row.column().prop(mesh, "texspace_size", text="Size") + class DATA_PT_vertex_groups(MeshButtonsPanel, bpy.types.Panel): bl_label = "Vertex Groups" COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} diff --git a/release/scripts/startup/bl_ui/properties_data_metaball.py b/release/scripts/startup/bl_ui/properties_data_metaball.py index c568d10b3b0..6dda99bc37f 100644 --- a/release/scripts/startup/bl_ui/properties_data_metaball.py +++ b/release/scripts/startup/bl_ui/properties_data_metaball.py @@ -70,10 +70,23 @@ class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel): layout.label(text="Update:") layout.prop(mball, "update_method", expand=True) - + + +class DATA_PT_mball_texture_space(DataButtonsPanel, bpy.types.Panel): + bl_label = "Texture Space" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} + + def draw(self, context): + layout = self.layout + + mball = context.meta_ball + + layout.prop(mball, "use_auto_texspace") + row = layout.row() - row.column().prop(mball, "texspace_location") - row.column().prop(mball, "texspace_size") + row.column().prop(mball, "texspace_location", text="Location") + row.column().prop(mball, "texspace_size", text="Size") class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel): diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index a82c4a479b8..2429ae630c8 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -488,7 +488,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel): if md.wrap_method == 'PROJECT': split = layout.split(percentage=0.25) - + col = split.column() col.label(text="Axis:") col.prop(md, "use_project_x") diff --git a/release/scripts/startup/bl_ui/properties_material.py b/release/scripts/startup/bl_ui/properties_material.py index 52d6b5f1376..31da9598641 100644 --- a/release/scripts/startup/bl_ui/properties_material.py +++ b/release/scripts/startup/bl_ui/properties_material.py @@ -883,7 +883,7 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, bpy.types.Panel): sub = col.column() sub.enabled = True sub.active = False - sub.prop(vol, "use_light_cache") + sub.label("Light Cache Enabled") col.prop(vol, "cache_resolution") sub = col.column(align=True) diff --git a/release/scripts/startup/bl_ui/properties_object_constraint.py b/release/scripts/startup/bl_ui/properties_object_constraint.py index 03823ad7345..5f79dd3127a 100644 --- a/release/scripts/startup/bl_ui/properties_object_constraint.py +++ b/release/scripts/startup/bl_ui/properties_object_constraint.py @@ -655,8 +655,8 @@ class ConstraintButtonsPanel(): row = col.row() row.label(text="Source to Destination Mapping:") - # note: chr(187) is the ASCII arrow ( >> ). Blender Text Editor can't - # open it. Thus we are using the hardcoded value instead. + # note: chr(187) is the ASCII arrow ( >> ). Blender Text Editor can't + # open it. Thus we are using the hardcoded value instead. row = col.row() row.prop(con, "map_to_x_from", expand=False, text="") row.label(text=" %s X" % chr(187)) diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 63333083cb2..7d4b78396bd 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -878,6 +878,15 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel): col.prop(part, "billboard_tilt_random", text="Random", slider=True) col = row.column() col.prop(part, "billboard_offset") + + row = layout.row() + col = row.column() + col.prop(part, "billboard_size", text="Scale") + if part.billboard_align == 'VEL': + col = row.column(align=True) + col.label("Velocity Scale:") + col.prop(part, "billboard_velocity_head", text="Head") + col.prop(part, "billboard_velocity_tail", text="Tail") if psys: col = layout.column() diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index 1fb2e5b735e..2b12e75564c 100644 --- a/release/scripts/startup/bl_ui/space_info.py +++ b/release/scripts/startup/bl_ui/space_info.py @@ -350,7 +350,7 @@ class INFO_MT_help(bpy.types.Menu): layout = self.layout layout.operator("wm.url_open", text="Manual", icon='HELP').url = 'http://wiki.blender.org/index.php/Doc:Manual' - layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-257/' + layout.operator("wm.url_open", text="Release Log", icon='URL').url = 'http://www.blender.org/development/release-logs/blender-258/' layout.separator() diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 7804a1a3c93..b9ac740eb5b 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -849,7 +849,7 @@ class USERPREF_PT_input(bpy.types.Panel, InputKeyMapPanel): class USERPREF_MT_addons_dev_guides(bpy.types.Menu): - bl_label = "Develoment Guides" + bl_label = "Development Guides" # menu to open webpages with addons development guides def draw(self, context): diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 02004283264..b989085939f 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -98,6 +98,8 @@ class VIEW3D_HT_header(bpy.types.Header): row.prop(toolsettings, "use_snap_peel_object", text="") elif toolsettings.snap_element == 'FACE': row.prop(toolsettings, "use_snap_project", text="") + if toolsettings.use_snap_project and obj.mode == 'EDIT': + row.prop(toolsettings, "use_snap_project_self", text="") # OpenGL render row = layout.row(align=True) @@ -772,10 +774,16 @@ class VIEW3D_MT_object_specials(bpy.types.Menu): if obj.type == 'CAMERA': layout.operator_context = 'INVOKE_REGION_WIN' - props = layout.operator("wm.context_modal_mouse", text="Camera Lens Angle") - props.data_path_iter = "selected_editable_objects" - props.data_path_item = "data.lens" - props.input_scale = 0.1 + if obj.data.type == 'PERSP': + props = layout.operator("wm.context_modal_mouse", text="Camera Lens Angle") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.lens" + props.input_scale = 0.1 + else: + props = layout.operator("wm.context_modal_mouse", text="Camera Lens Scale") + props.data_path_iter = "selected_editable_objects" + props.data_path_item = "data.ortho_scale" + props.input_scale = 0.01 if not obj.data.dof_object: #layout.label(text="Test Has DOF obj"); @@ -1098,17 +1106,18 @@ class VIEW3D_MT_sculpt(bpy.types.Menu): layout.operator_menu_enum("brush.curve_preset", "shape") layout.separator() - sculpt_tool = brush.sculpt_tool + if brush is not None: # unlikely but can happen + sculpt_tool = brush.sculpt_tool - if sculpt_tool != 'GRAB': - layout.prop_menu_enum(brush, "stroke_method") + if sculpt_tool != 'GRAB': + layout.prop_menu_enum(brush, "stroke_method") - if sculpt_tool in {'DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'}: - layout.prop_menu_enum(brush, "direction") + if sculpt_tool in {'DRAW', 'PINCH', 'INFLATE', 'LAYER', 'CLAY'}: + layout.prop_menu_enum(brush, "direction") - if sculpt_tool == 'LAYER': - layout.prop(brush, "use_persistent") - layout.operator("sculpt.set_persistent_base") + if sculpt_tool == 'LAYER': + layout.prop(brush, "use_persistent") + layout.operator("sculpt.set_persistent_base") layout.separator() layout.prop(sculpt, "use_threaded", text="Threaded Sculpt") diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 503a1d806ac..52eb76d0710 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -997,7 +997,11 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel): @classmethod def poll(cls, context): - return (context.sculpt_object and context.tool_settings.sculpt) or (context.vertex_paint_object and context.tool_settings.vertex_paint) or (context.weight_paint_object and context.tool_settings.weight_paint) or (context.image_paint_object and context.tool_settings.image_paint) + ts = context.tool_settings + return ((context.sculpt_object and ts.sculpt) or + (context.vertex_paint_object and ts.vertex_paint) or + (context.weight_paint_object and ts.weight_paint) or + (context.image_paint_object and ts.image_paint)) def draw(self, context): layout = self.layout @@ -1005,6 +1009,10 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel): settings = __class__.paint_settings(context) brush = settings.brush + if brush is None: # unlikely but can happen + layout.label(text="Brush Unset") + return + col = layout.column() if context.sculpt_object and context.tool_settings.sculpt: diff --git a/release/text/GPL-license.txt b/release/text/GPL-license.txt index 8860b2a8afa..e8c0353e734 100644 --- a/release/text/GPL-license.txt +++ b/release/text/GPL-license.txt @@ -2,7 +2,7 @@ Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. diff --git a/release/text/readme.html b/release/text/readme.html index 1014d8ef80a..2b5a4071a7f 100644 --- a/release/text/readme.html +++ b/release/text/readme.html @@ -12,22 +12,22 @@ </style> </head> <body> -<p class="title"><b>Blender 2.57</b></p> +<p class="title"><b>Blender 2.58</b></p> <p><br></p> <p class="header"><b>About</b></p> <p class="body">Welcome to Blender, the free, open source 3D application for modeling, animation, rendering, compositing, video editing and game creation. Blender is available for Linux, Mac OS X, Windows, Solaris and FreeBSD and has a large world-wide community.</p> <p class="body">Blender can be used freely for any purpose, including commercial use and distribution. It's free and open-source software, released under the GNU GPL licence. The entire source code is available on our website.</p> <p class="body">For more information, visit <a href="http://www.blender.org">blender.org</a>.</p> <p><br></p> -<p class="header"><b>2.57</b></p> -<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.57. This release is the first official stable release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. <a href="http://www.blender.org/development/release-logs/blender-256-beta/">More information about this release</a>.</p> +<p class="header"><b>2.58</b></p> +<p class="body">The Blender Foundation and online developer community is proud to present Blender 2.58. This release is the second official stable release of the Blender 2.5 series, and represents the culmination of many years of redesign and development work. <a href="http://www.blender.org/development/release-logs/blender-258/">More information about this release</a>.</p> <p class="body">What to Expect:</p> <p class="body"> • Big improvements - This is our most exciting version to date, already a significant improvement in many ways over 2.49</p> <p class="body"> • Missing/Incomplete Features - Although most of it is there, not all functionality from pre-2.5 versions has been restored yet. Some functionality may be re-implemented a different way.</p> <p class="body"> • Changes - If you're used to the old Blenders, Blender 2.5 may seem quite different at first, but it won't be long before it grows on you even more than before.</p> <p><br></p> <p class="header"><b>Bugs</b></p> -<p class="body">Although Blender 2.57 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.57. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p> +<p class="body">Although Blender 2.58 is considered a stable release, you may encounter a bug. If you do, please help us by posting it in the bug tracker or using Help → Report a Bug from inside Blender 2.58. If it wasn’t reported yet, please log in (or register) and fill in detailed information about the error. Please post detailed instructions on how to reproduce it or post a .blend file showcasing the bug.</p> <p><br></p> <p class="header"><b>Package Contents</b></p> <p class="body">The downloaded Blender package includes:</p> @@ -51,7 +51,7 @@ <p class="header"><b>Links</b></p> <p class="body">Users:</p> <p class="body"> General information <a href="http://www.blender.org">www.blender.org</a> <br> - Full release log <a href="http://www.blender.org/development/release-logs/blender-257/">www.blender.org/development/release-logs/blender-257/</a><br> + Full release log <a href="http://www.blender.org/development/release-logs/blender-258/">www.blender.org/development/release-logs/blender-258/</a><br> Tutorials <a href="http://www.blender.org/education-help/">www.blender.org/education-help/</a> <br> Manual <a href="http://wiki.blender.org/index.php/Doc:Manual">wiki.blender.org/index.php/Doc:Manual</a><br> User Forum <a href="http://www.blenderartists.org">www.blenderartists.org</a><br> |