tiistai 1. maaliskuuta 2011

Are you sure?

Mendeley shows the right way to ask if you want to remove your data!

perjantai 11. helmikuuta 2011

Nokia and Microsoft, it's a deal!

Oh, this is a sad day!
Probably there is no Nokia in future. It might be called Microsoft's mobile unit...

As a Finn, I'm so sorry.

keskiviikko 2. helmikuuta 2011

VIM code completion

Hidden treasure: Ctrl + n in insert mode completes variable names etc. Oh joy!

keskiviikko 26. tammikuuta 2011

Disabling auto exposure in Logitech 9000 pro

Auto exposure was ruining my attempts to use OpenCV successfully. Then I found guvcview. It gives option to disable auto exposure and set values manually.

Installation
In Debian based systems:
sudo apt-get install guvcview

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.