Thank you~~Jonne. I'm using it!
On Sat, Dec 17, 2011 at 12:04 PM, Jonne Nauha <[email protected]> wrote:
> You can compare floats if you just round them first. I'm not sure if its
> more efficient or not than querying eg. the distance from c++ math lib.
> Here is what I have been using for situations like this and work well for
> distances, just use 2-4 decimal precision.
>
> function RoundFloat(num, decimals)
> {
> var pow = Math.pow(10,decimals);
> return Math.round(num*pow)/pow;
> }
>
> Best regards,
> Jonne Nauha
> Adminotech developer
>
>
> On Sat, Dec 17, 2011 at 4:20 PM, 赵柏萱 <[email protected]> wrote:
>
>> Thank you for your hints~~ :)
>>
>>
>> On Sat, Dec 17, 2011 at 5:50 AM, Jukka Jylänki <[email protected]> wrote:
>>
>>> Two (non-Tundra-specific) hints for the code:
>>>
>>> 1. Never compare floats using the built-in equality operator. Due to how
>>> IEEE-754 operates, it is possible that the equality operator is never true.
>>> Instead, use float3::Distance(float3), or float3::DistanceSq(float3).
>>> 2. Instead of accumulating the coordinates per-component, you should
>>> vectorize your code to make it more compact (and faster as well). float3
>>> has a member function .Add(float3).
>>>
>>> 2011/12/17 赵柏萱 <[email protected]>
>>>
>>>> Great! I'll try this, thank you Jonne!
>>>>
>>>> On Fri, Dec 16, 2011 at 6:42 PM, Jonne Nauha <[email protected]>wrote:
>>>>
>>>>> Fun to see you are learning Tundra scripting fast. And to answer your
>>>>> question yes this is one way of doing movement if we are talking about
>>>>> pos,
>>>>> rot, scale. You can make it a bit cleaner by just using the transform to
>>>>> assing new values and assign it back to the placeable like so:
>>>>>
>>>>> function updates()
>>>>> {
>>>>> var t = me.placeable.transform;
>>>>>
>>>>> if (tarpos.x != t.pos.x)
>>>>> t.pos.x = tarpos.x > t.pos.x ? t.pos.x + moveSpeed : t.pos.x -
>>>>> moveSpeed;
>>>>> if (tarpos.y != t.pos.y)
>>>>> t.pos.y = tarpos.y > t.pos.y ? t.pos.y + moveSpeed : t.pos.y -
>>>>> moveSpeed;
>>>>> if (tarpos.z != t.pos.z)
>>>>> t.pos.z = tarpos.z > t.pos.z ? t.pos.z + moveSpeed : t.pos.z -
>>>>> moveSpeed;
>>>>>
>>>>> <same for rot, just use t.rot>
>>>>>
>>>>> <whatever else logic you need>
>>>>>
>>>>> // Assign back to the full trasnform attribute, no need for new
>>>>> Transform(..)
>>>>> me.placeable.transform = t;
>>>>> }
>>>>>
>>>>> Other option is to use the math library lerp and slerp functions, I
>>>>> have made some camera transition movement animations with them. float3 and
>>>>> Quat for example has them
>>>>> http://clb.demon.fi/MathGeoLib/docs/float3_Lerp.php For the t you can
>>>>> use eg. QTimeLine http://doc.trolltech.com/4.7/qtimeline.html with
>>>>> setting duration and range from 0.0 to 1.0 and connecting to the proper
>>>>> signal.
>>>>>
>>>>> For animations you need to have a EC_Mesh with a .mesh ref and a
>>>>> .skeleton ref set. Then you need EC_AnimationController component in the
>>>>> same entity. This will "snoop" the available animations from the .skeleton
>>>>> file in the EC_Mesh and you have various playback and stop functions for
>>>>> the animations, eg.
>>>>> me.animationcontroller.EnableExclusiveAnimation("walk",
>>>>> true); See doxygen for
>>>>> more<http://realxtend.org/doxygen/class_e_c___animation_controller.html>
>>>>> .
>>>>>
>>>>> Hope that helps.
>>>>>
>>>>> Best regards,
>>>>> Jonne Nauha
>>>>> Adminotech developer
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Dec 16, 2011 at 11:58 PM, Zhao Boxuan <[email protected]>wrote:
>>>>>
>>>>>> Great presentation! It's very interesting when I see some animals
>>>>>> walk around. It seems like blender makes the animation of animals, but
>>>>>> can we use javascript to generate animation in real time(just
>>>>>> movement)? Currently, I just connect an function using "
>>>>>> frame.Updated.connect(updates);" and define the updates function like
>>>>>> below:
>>>>>>
>>>>>> function updates()
>>>>>> {
>>>>>> var rot = me.placeable.transform.rot;
>>>>>> var scale = me.placeable.transform.scale;
>>>>>> var pos = me.placeable.transform.pos;
>>>>>>
>>>>>> if (tarpos.x > pos.x)
>>>>>> pos.x = pos.x + moveSpeed;
>>>>>> else if(tarpos.x < pos.x)
>>>>>> pos.x = pos.x - moveSpeed;
>>>>>> if (tarpos.y > pos.y)
>>>>>> pos.y = pos.y + moveSpeed;
>>>>>> else if(tarpos.y < pos.y)
>>>>>> pos.y = pos.y - moveSpeed;
>>>>>> if (tarpos.z > pos.z)
>>>>>> pos.z = pos.z + moveSpeed;
>>>>>> else if(tarpos.z < pos.z)
>>>>>> pos.z = pos.z - moveSpeed;
>>>>>>
>>>>>> if (tarRot.x > rot.x)
>>>>>> rot.x = rot.x + rotSpeed;
>>>>>> else if(tarRot.x < rot.x)
>>>>>> rot.x = rot.x - rotSpeed;
>>>>>> else if (tarRot.y > rot.y)
>>>>>> rot.y = rot.y + rotSpeed;
>>>>>> else if(tarRot.y < rot.y)
>>>>>> rot.y = rot.y - rotSpeed;
>>>>>> else if (tarRot.z > rot.z)
>>>>>> rot.z = rot.z + rotSpeed;
>>>>>> else if(tarRot.z < rot.z)
>>>>>> rot.z = rot.z - rotSpeed;
>>>>>>
>>>>>> me.placeable.transform = new Transform(pos, rot, scale);
>>>>>>
>>>>>> if(tarpos.Sub(pos).Length() <= 0.1 && tarRot.Sub(rot).Length() <=
>>>>>> 0.3)
>>>>>> {
>>>>>> entity.placeable.transform = new Transform(tarpos, tarRot,
>>>>>> scale);
>>>>>> }
>>>>>> }
>>>>>>
>>>>>> Reset the object's transform every frame. seems not a good way to do
>>>>>> that. :) So, do we have some better way to make an movement?
>>>>>>
>>>>>> Thank you!
>>>>>>
>>>>>> Zhao
>>>>>>
>>>>>> On Dec 16, 6:07 am, Toni Alatalo <[email protected]> wrote:
>>>>>> > is up on youtube, thanks for the bconf folks - i posted about it to
>>>>>> thehttp://www.realxtend.org/blog ..
>>>>>> http://realxtend.wordpress.com/2011/12/16/tundra-and-blender-integrat.
>>>>>> ..
>>>>>> >
>>>>>> > will need to install blender2ogre on more computers and configure
>>>>>> it fully for the nice integration to work etc., has been really nice to
>>>>>> have at hand -- thanks Brett for the work, and help with preparing the
>>>>>> demo
>>>>>> too!
>>>>>> >
>>>>>> > ~Toni
>>>>>>
>>>>>> --
>>>>>> http://groups.google.com/group/realxtend
>>>>>> http://www.realxtend.org
>>>>>>
>>>>>
>>>>> --
>>>>> http://groups.google.com/group/realxtend
>>>>> http://www.realxtend.org
>>>>>
>>>>
>>>> --
>>>> http://groups.google.com/group/realxtend
>>>> http://www.realxtend.org
>>>>
>>>
>>> --
>>> http://groups.google.com/group/realxtend
>>> http://www.realxtend.org
>>>
>>
>> --
>> http://groups.google.com/group/realxtend
>> http://www.realxtend.org
>>
>
> --
> http://groups.google.com/group/realxtend
> http://www.realxtend.org
>
--
http://groups.google.com/group/realxtend
http://www.realxtend.org