Do not complicate your life

I work on SIO2 and write this source code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
newobj = sio2ObjectDuplicate(fo , object->_SIO2transform, "name", 1);

     
     float c = 2;
     
     angelA = 90 * ( sio2->_SIO2camera->_SIO2transform->dir->x);
     
     
     cath1 = cos( angelA/SIO2_RAD_TO_DEG )*c;
     cath2 = sqrtf(c*c - cath1*cath1);

     if(sio2->_SIO2camera->_SIO2transform->dir->x > 0)
          newobj->_SIO2transform->loc->x += fabs( cath2 );
     if(sio2->_SIO2camera->_SIO2transform->dir->x < 0)
          newobj->_SIO2transform->loc->x -= fabs( cath2 );
     
     if(sio2->_SIO2camera->_SIO2transform->dir->y > 0)
          newobj->_SIO2transform->loc->y += fabs( cath1 );
     else if(sio2->_SIO2camera->_SIO2transform->dir->y < 0)
          newobj->_SIO2transform->loc->y -= fabs( cath1 );

I use Тригонометрические_функции and many others information …
but this code is not perfect !!!

Continue reading

SIO2 answers on questions from forum sio2

Center of object from

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SIO2object *tmp = sio2ResourceGetObject( sio2->_SIO2resource, "name of your object" );

         tmp->buf = ( unsigned char * )sio2MapBuffer( tmp->vbo, GL_ARRAY_BUFFER );

         unsigned int i = 0,
                n_vert = sio2ObjectGetNumVert( tmp );
           
         while( i != n_vert )
         {
            vec3 v;

            memcpy( &v, &tmp->buf[ i * 12 ], 12 );
           
            printf("%f %f %f\n", v.x, v.y, v.z);
         
            ++i;
         }

         tmp->buf = ( unsigned char * )sio2UnmapBuffer( GL_ARRAY_BUFFER );

 

duplicate object my version

1
2
3
4
5
SIO2object *object = ( SIO2object * )sio2ResourceGet( sio2->_SIO2resource,
                                             SIO2_OBJECT,
                                              "name object for duplicate" );
     
SIO2object  *new = sio2ObjectDuplicate(object, object->_SIO2transform, " name by new object", 1);

 

handle parent to child my version

1
2
3
4
5
6
7
8
SIO2object *parent = ( SIO2object * )sio2ResourceGet( sio2->_SIO2resource,
                                             SIO2_OBJECT,
                                              "name parent" );
SIO2object *child = ( SIO2object * )sio2ResourceGet( sio2->_SIO2resource,
                                             SIO2_OBJECT,
                                              "name child" );

child->_SIO2transform->_SIO2parent = parent->_SIO2transform;

Create 3d earth for SIO2 project

Припомощи SIO2 мне захотелось сделать землю. Другими словами просто создать шар и наложить на него текстуру.

В процессе этих действий столкнулся с некоторыми проблемками:
- Это какой тип шара можно использовать в SIO2.
- Размер текстуры.
- Накладывание текстуры.

Сейчас пошагово опишу как я это сделал:

Открываем Blender. Удаляем стандартный куб. Нажимаем пробел и в меню выбираем Add -> Mesh -> IcoSphere. Выставляем subdivision на 5, а радиус на 2 к примеру. В низу на панели “Link and Materials” нажимаем “Set Smooth”, а в “Mesh” создаем новую UV Texture, если ее там нету, нажав на кнопку “New”.

Continue reading