tiistai 21. joulukuuta 2010

Using threads in Blender game engine




I just made an experiment of using threads in Blender's game engine. Even though using threads in Python does not necessarily make code any faster (see GIL), in this case using thread(s) has a really big difference.

AFAIK, rendering and execution of python scripts are running sequential in BGE. This is a bad thing if you have to make some heavy lifting in the script. Whole game engine have to wait until the job is done ruining your FPS. By using threads, the heavy lifting can be done parallel (or at least semiparallel) to main rendering loop.

The script can be found from Blenderartists.

maanantai 20. joulukuuta 2010

Towards Blender 2.55





I had a little break from Blender but now its time to go back and see what devs have been doing. I just converted my old pyramidaze script for 2.55. It is REALLY simple but it was my first python script back in 2006 :)

It just iterates through selected faces of the object and adds a pyramid top of them (see image above).

Here is 2.55 version:
#**********************************************************************************************
#pyramidaze.py
# - This script adds a "pyramid" over every selected face
#
# - Open this file in the Blender's text window
# - Select faces
# - set settings (see below)
# - run script (Alt + P)
# 
# there is nothing special in this script but it shows how to iterate 
# through all faces in selected object, how to get normal and how to 
create new mesh object.
#
# Feel free to use this script any way you like, I'm sure this is very useful ;)
#
#Ari Hayrinen 29.11.2006 
# updated for Blender 2.55 20.12.2010
#www.opendimension.org/blender_en
#
# TODO:
# - GUI 
# 
#*************************************************************************************************

import bpy
import mathutils

#************************************************************************************************
# settings
#************************************************************************************************
py_height = 1       # pyramid height if use_area is 0, negative value inverts pyramid
use_area = 1        # if 1, uses face area as pyramid height
area_multi = 1      # multiplier for face area, negative values inverts pyramid



#********************************************************************************
#main
#*********************************************************************************

objekti = bpy.context.active_object
scene = bpy.context.scene

# list for new faces
coords = []
faces = []

# counter so we know where to add new faces 
verts = 0  
vertices = objekti.data.vertices


# let's go through all faces in selected object
for face in objekti.data.faces:
#use only selected faces    

if face.select:


center = face.center

#number of vertices
vco = len(face.vertices) 

if use_area:
py_height = face.area * area_multi


#multiple normal with pyramid height and add result to the center of the face
center.x = center.x + face.normal[0] * py_height
center.y = center.y + face.normal[1] * py_height
center.z = center.z + face.normal[2] * py_height

#create vertices 
coords.append([center.x,center.y,center.z])
verts +=1

for i in range(vco):
coords.append(vertices[face.vertices[i]].co)
verts +=1


#create triangles
cco = vco + 1                        # number of created vertices
for j in range(vco):    
if j < (vco-1):
faces.append([verts-cco, verts-(cco-(j+1)), verts-(vco-j-1)])
else:
faces.append([verts-cco, verts-(cco-(j+1)), verts-(cco-1)])


# Create new mesh block and add faces to it
mesh = bpy.data.meshes.new('myMesh')

mesh.from_pydata(coords,"",faces)
mesh.update()

new_obj = bpy.data.objects.new("koe", mesh)
scene.objects.link(new_obj)

new_obj.location = objekti.location

keskiviikko 17. marraskuuta 2010


Why do I have a problem with Android market

I bought Samsung Galaxy S phone. It has Android in it and it is a wonderful phone. And then there is the Android market which has a lot of nice applications in it. The problem is that I don't trust them. I'm so used to use Free software that any proprietary code makes me suspicious.

And why should I trust? Android applications knows more than they should.


Where is a market place for Free software only?
I think FLOSS-market place could be a great way to support Free software. So far, I haven't paid for Free software (although I've donated), but I can see myself paying for Free applications more happily than proprietary ones.

maanantai 4. lokakuuta 2010

Handy Perl script for generating passwords:

 perl -e 'print crypt("something_here", "this_is_salt"),"\n"' 

lauantai 5. kesäkuuta 2010

Are information agents the format radio of Internet?

Those who have bought books from Amazon.com knows of their habit of recommend other books that Amazon thinks could be in your interest. And I hate to admit but usually these recommendations are pretty good. I think this is the basic idea of web 3.0 in general. It knows more than current web and it can act based on that knowledge.

So Web 3.0 should be smarter web. Not just documents but information provided by context sensitive agents. But how about information outside my context?

There is a radio channel that advertises itself with slogan "Hit Music Only". The listener can be sure that he or she is never exposed to Bach or Arvo Pärt. Those things simply does not exist in that universe.

So what if intelligent agents works similarly than radio stations that are concentrated only one type of music? They filters out everything that is not suitable to our "context" and we don't never have to see anything inappropriate (e.g. something that does fit in our beliefs)?

keskiviikko 5. toukokuuta 2010

Ubuntu 10.4 is fast!

I tried the latest version of Ubuntu and it is just fast! Boots quickly and overall appearance is snappy. I hope next version of Fedora can compete with that.

Anyway, good work devs!

http://www.ubuntu.com/