JeuxOnLineForumsPlusCréer un compte
Second Life
Forum général
Répondre
Partager Outils Rechercher
Avatar de Worstbobo
Worstbobo
Dieu / Déesse suprême
 
Avatar de Worstbobo
 
Je cite:

Citation:
Envoyé par Yasujiro2 Voir le message

1) Le script le plus simple du monde (équivalent à llTargetOmega()), n'existe pas sur le store.
et

Citation:
Envoyé par bestmomo Voir le message
Bon je suis quand même allé en édition faire une scène (ma carte graphique reste au-dessous de 90°). J'ai acheté une belle noix de coco pour meubler et un script de rotation que j'ai mis dans ma noix de coco. Eh bien c'est mal parti parce qu'en bidouillant les paramètres pas moyen de la faire tourner ma noix de coco .

Edit : bon j'ai compris, faut que l'objet soit dynamique ! Mais c'est quand même bien laborieux tout ça...
Bon, ben vas-y! Fais péter ton script en le publiant sur le forum. Egoïste, va!
Lien direct vers le message - Vieux
Avatar de anpton
anpton
Alpha & Oméga
 
Avatar de anpton
 
Citation:
Envoyé par bestmomo Voir le message
Bon je suis quand même allé en édition faire une scène (ma carte graphique reste au-dessous de 90°). J'ai acheté une belle noix de coco pour meubler et un script de rotation que j'ai mis dans ma noix de coco. Eh bien c'est mal parti parce qu'en bidouillant les paramètres pas moyen de la faire tourner ma noix de coco .

Edit : bon j'ai compris, faut que l'objet soit dynamique ! Mais c'est quand même bien laborieux tout ça...
Je savais qu'il viendrait faire tourner des noix de coco...
Lien direct vers le message - Vieux
Avatar de bestmomo
bestmomo
Alpha & Oméga
 
Avatar de bestmomo
 
Citation:
Envoyé par Worstbobo Voir le message
Bon, ben vas-y! Fais péter ton script en le publiant sur le forum. Egoïste, va!
Le script je l'ai pris tout fait dans la boutique et on peut même pas le lire .

Je n'ai pas encore regardé comment tout ça fonctionne mais j'ai au moins compris qu'on a enfin changé de langage, ou plutôt que maintenant on dispose d'un "vrai" langage, en l’occurrence le C#. Par contre je ne sais pas si on est limités en taille mémoire, je suppose que oui...

Citation:
Envoyé par anpton Voir le message
Je savais qu'il viendrait faire tourner des noix de coco...
La noix j'ai pas réussi à la rendre dynamique (ça doit être trop con une noix), du coup j'ai fait tourner une chaise...
Lien direct vers le message - Vieux
Avatar de Amberline
Amberline
Alpha & Oméga
 
Avatar de Amberline
 
Citation:
Envoyé par anpton Voir le message
Je te redonne la combine "souris seule" que j'explique plus haut :

En mode édition, à gauche tu as une fenêtre avec la liste de tous les objets de la scene. Si tu "double click gauche" sur le nom d'un des objets de la liste, ça va centrer la caméra sur l'objet et le mettre en "edit", mais aussi, la caméra sera collée à cet objet et avec "click droit + glisser la souris" tu va évoluer dans la scène avec cet objet pour centre et tu auras un zoom avec la molette de la souris...
Merci Anpton, j'ai bien lu ton astuce hier
mais je n'ai pas la fenêtre avec la liste de tous les objets ou bien je ne vois pas ce que tu veux dire Du coup je n'ai pas demandé hier des précisions me disant que je trouverais bien à un moment ou à un autre.
En mode édition mes objets sont dans une liste en bas de mon écran et si je fais un double clic G sur l'objet cela ne fait rien.

Ce soir je télécharge ma première skybox faite par mes petites mimines, hâte de voir si cela va fonctionner
Si cela fonctionne, j'en mettrais en free (les plus simples) sur le market. Si cela ne fonctionne pas et bien, je remettrais mon ouvrage sur le feu.
J'ai peur d'avoir une trace sur les bords, bon je verrais bien
Lien direct vers le message - Vieux
Avatar de anpton
anpton
Alpha & Oméga
 
Avatar de anpton
 
Citation:
Envoyé par bestmomo Voir le message
La noix j'ai pas réussi à la rendre dynamique (ça doit être trop con une noix), du coup j'ai fait tourner une chaise...
Regarde si en sous/menu ta noix n'a pas un registre "volume" et si tu as ça, tu peux lui attribuer un physique "sphère" ou "box".
Lien direct vers le message - Vieux
Avatar de anpton
anpton
Alpha & Oméga
 
Avatar de anpton
 
Citation:
Envoyé par Amberline Voir le message
mais je n'ai pas la fenêtre avec la liste de tous les objets
C'est une fenêtre qui s'appelle "Object scene" que tu ouvres depuis le menu tout en haut (tu as deux carrés superposés) c'est un petit menu déroulant où tu peux faire apparaître ou cacher les différents menus.

Dernière modification par anpton ; 20/08/2017 à 22h54.
Lien direct vers le message - Vieux
Avatar de Amberline
Amberline
Alpha & Oméga
 
Avatar de Amberline
 
Citation:
Envoyé par anpton Voir le message
C'est une fenêtre qui s'appelle "Object scene" que tu ouvres depuis le menu tout en haut (tu as deux carrés superposés) c'est un petit menu déroulant où tu peut faire apparaître ou cacher les différents menus.
Ok, merci J'avais vu cette fenêtre mais comme il n'y avait que les rochers, enfin j'ai cru, je pensais que cela n'était que les objets mis à dispo et pas les objets perso.
J'ai pu les trouver dans la liste et avoir la cam en multidirectionnelle et j'avoue que c'est exactement ce qui me manquait.
Lien direct vers le message - Vieux
Avatar de Amberline
Amberline
Alpha & Oméga
 
Avatar de Amberline
 
J'ai perdu mon message, enfin bref !

Le ctrl Z fonctionne pour ceux qui ont perdu un truc en route

Pour animer les objets, on peut utiliser des scripts, tout est dans l'aide pour les limites des scripts et comment les présenter pour Sensar.
C'est en C#, très pratique.
Ceux qui savent, le market est fait pour vous !

Dernière modification par Amberline ; 21/08/2017 à 00h12.
Lien direct vers le message - Vieux
Avatar de Worstbobo
Worstbobo
Dieu / Déesse suprême
 
Avatar de Worstbobo
 
Citation:
Envoyé par Amberline Voir le message
J'ai perdu mon message, enfin bref !

C'est en C#, très pratique.
Il y a certes de nombreuses personnes qui maîtrisent C#. Mais le problème, je pense, ce sont les spécificités de la 3D (exemple les rotations), qu'elles ne maîtrisent pas forcément.

Donc, cela exclut pas mal de monde. Et notamment, tous ceux qui avaient appris à bidouiller le LSL en amateurs.
Lien direct vers le message - Vieux
Avatar de bestmomo
bestmomo
Alpha & Oméga
 
Avatar de bestmomo
 
Citation:
Envoyé par Worstbobo Voir le message
Il y a certes de nombreuses personnes qui maîtrisent C#. Mais le problème, je pense, ce sont les spécificités de la 3D (exemple les rotations), qu'elles ne maîtrisent pas forcément.

Donc, cela exclut pas mal de monde. Et notamment, tous ceux qui avaient appris à bidouiller le LSL en amateurs.
En fait la maîtrise de C# n'est qu'une petite partie de la question (en gros 5%), les véritables soucis concernent l'écosystème en question. Pour prendre un exemple simple on peut avoir une belle caisse à outil d'électricien et savoir s'en servir mais on n'est pas pour autant un électricien parce qu'on doit en plus connaître les contraintes de constitution des circuits électriques, les normes d'installation, etc...

Il faut donc visiter toutes les librairies fournies pour Sansar (elles ne sont d'ailleurs pas encore toutes disponibles), qu'on peut trouver ici, et qui manquent d'ailleurs cruellement d'exemples de mise en œuvre pour le peu que j'en ai vu. La 3D n'est qu'un des multiples aspects à considérer.

En gros pour le moment on a l'API SceneObjectScript, pour gérer les scripts d'une scène. Par contre pour ce qui est des scripts attachés aux avatars, aux expériences ou aux objets qui ne font pas partie d'une scène il faudra encore attendre...

Pour ce qui concerne les scripts des scènes on a deux API :

Il faut donc aller fouiller là dedans pour comprendre comment tout ça est construit...
Lien direct vers le message - Vieux
Avatar de Worstbobo
Worstbobo
Dieu / Déesse suprême
 
Avatar de Worstbobo
 
Question con mais c'est quoi ce qu'on appelle une "scène"?
Lien direct vers le message - Vieux
Avatar de bestmomo
bestmomo
Alpha & Oméga
 
Avatar de bestmomo
 
Citation:
Envoyé par Worstbobo Voir le message
Question con mais c'est quoi ce qu'on appelle une "scène"?
(Cliquez le bouton ou survolez le contenu pour afficher ce spoiler.)
A scene is a virtual space that you have created in Sansar, which includes the ground, sky, and any imported content that you have laid out in the scene. When a user visits your experience, your edited scene is what they see and explore. A scene on its own cannot be visited unless it is linked to an experience.

An experience represents the unique address pointing to a particular scene, which lays out the space that visitors see when they visit your experience. An experience becomes visitable when it is published in the Atlas, which is a public listing of experiences in Sansar, or by sharing the experience link with other Sansar users.
Lien direct vers le message - Vieux
Avatar de Worstbobo
Worstbobo
Dieu / Déesse suprême
 
Avatar de Worstbobo
 
Ok, mais ce serait alors plutôt la distinction script scène/ script objet qui n'est pas claire. ?????????????????????????

Dernière modification par Worstbobo ; 23/08/2017 à 21h35.
Lien direct vers le message - Vieux
Avatar de bestmomo
bestmomo
Alpha & Oméga
 
Avatar de bestmomo
 
Citation:
Envoyé par Worstbobo Voir le message
Ok, mais ce serait alors plutôt la distinction script scène/ script objet qui n'est pas claire. ?????????????????????????
Apparemment la scène est aussi un objet auquel on peut attacher des scripts, contrairement à SL où on ne peut mettre des scripts que dans des objets.

Par exemple pour connaître les avatars présents sur une scène on demande à la scène :
Code PHP:
ScenePrivate.GetAgents() 
Lien direct vers le message - Vieux
Avatar de Worstbobo
Worstbobo
Dieu / Déesse suprême
 
Avatar de Worstbobo
 
Citation:
Envoyé par bestmomo Voir le message
Apparemment la scène est aussi un objet auquel on peut attacher des scripts, contrairement à SL où on ne peut mettre des scripts que dans des objets.

Par exemple pour connaître les avatars présents sur une scène on demande à la scène :
Code PHP:
ScenePrivate.GetAgents() 
Ok, je vois mieux.

Tu as essayé ce script de "follow path", qui a l'air intéressant pour animer un objet?

/* This content is licensed under the terms of the Creative Commons Attribution 4.0 International License.
* When using this content, you must:
* • Acknowledge that the content is from the Sansar Knowledge Base.
* • Include our copyright notice: "© 2017 Linden Research, Inc."
* • Indicate that the content is licensed under the Creative Commons Attribution-Share Alike 4.0 International License.
* • Include the URL for, or link to, the license summary at https://creativecommons.org/licenses/by-sa/4.0/deed.hi (and, if possible, to the complete license terms at https://creativecommons.org/licenses.../4.0/legalcode.
* For example:
* "This work uses content from the Sansar Knowledge Base. © 2017 Linden Research, Inc. Licensed under the Creative Commons Attribution 4.0 International License (license summary available at https://creativecommons.org/licenses/by/4.0/ and complete license terms available at https://creativecommons.org/licenses/by/4.0/legalcode)."
*/

using Sansar.Simulation;
using System;

// Path Example will move a dynamic object along a route of points.
public class FollowThePath : SceneObjectScript
{
#region Editor Properties
// Higher Force_Factor will move the object quicker. Too high and the object may overshoot positions.
public float Speed = 1;

// There is no support for arrays or lists in the property editor.
// Give each potential position its own variable, which we will make a list from.
// Note: Only 10 total parameters can be shown in the editor for a script, giving us 6 points to pick, in addition to the object's initial position.
public Sansar.Vector Relative_Position_1;
public Sansar.Vector Relative_Position_2;
public Sansar.Vector Relative_Position_3;
public Sansar.Vector Relative_Position_4;
public Sansar.Vector Relative_Position_5;
public Sansar.Vector Relative_Position_6;
public Sansar.Vector Relative_Position_7;

// If not looping, after reaching the end it will warp to the start
public bool Loop = false;

// If set, the object will TP any user that collides with it to this position in the region.
public Sansar.Vector On_Collide_TP_Dest;
#endregion

// These private members will not be shown on object properties.

// The RigidBodyComponent is the interface for dynamic object interactions.
private RigidBodyComponent RigidBody = null;

// This will be our list of positions, built from the parameters and excluding any that are all zero.
private System.Collections.Generic.List<Sansar.Vector> Positions = new System.Collections.Generic.List<Sansar.Vector>();

// Override Init to set up event handlers and start coroutines.
public override void Init()
{
// If the object had its components set in the editor they should now have the member initialized
// [Editor support for Component types is not yet implemented]
// The component can also be found dynamically
if (RigidBody == null)
{
if(!ObjectPrivate.TryGetFirstComponent(out RigidBody))
{
// This example will only work on a dynamic object with a rigidbody. Bail if there isn't one.
return;
}
}

// This small Action only adds the position to the list if one of the components is not zero.
// To set <0,0,0> as a position, set the W field on the position to any non-zero value.
Action<Sansar.Vector> AddItem = position =>
{
if (position.X != 0 || position.Y != 0 || position.Z != 0 || position.W != 0)
{
Positions.Add(position + RigidBody.GetPosition());
}
};

AddItem(new Sansar.Vector(0,0,0,1));
AddItem(Relative_Position_1);
AddItem(Relative_Position_2);
AddItem(Relative_Position_3);
AddItem(Relative_Position_4);
AddItem(Relative_Position_5);
AddItem(Relative_Position_6);
AddItem(Relative_Position_7);

// Check that we got at least 2 good positions before doing anything.
if (Positions.Count < 2)
{
Log.Write(Sansar.Script.LogLevel.Warning, "Not enough points set for dynamic object script. Set at least 1 position in the properties panel.");
return;
}

// If there is a position set for On_Collide_TP_Dest then set up a collision coroutine to TP anyone that collides with the object.
// To set <0,0,0> as the TP destination, set the W field on the position to any non-zero value.
if (On_Collide_TP_Dest.X != 0 || On_Collide_TP_Dest.Y != 0 || On_Collide_TP_Dest.Z != 0 || On_Collide_TP_Dest.W != 0)
{
StartCoroutine(CollisionsCoroutine);
}

// Start up a coroutine to handle moving from position to position.
StartCoroutine(Movement);
}

// The Math libraries are missing a vector4f magnitude. Used in Movement().
private double GetMagnitude(Sansar.Vector vector)
{
return Math.Sqrt(vector.X * vector.X + vector.Y * vector.Y + vector.Z * vector.Z);
}


// Push this object toward the next position.
private void Movement()
{
// The next_position is an index into the positions list
int next_position = 0;
while (true)
{
// Ensure a valid index first.
if (next_position >= Positions.Count)
{
next_position = 0;
if (!Loop)
{ // If we aren't looping we snap to the first position and bump next_position so the object will move toward the second position.
RigidBody.SetPosition(Positions[next_position++]);

// Wait a very small amount so the position set can take affect.
Wait(TimeSpan.FromSeconds(0.02));
}
}

// Get our target position and update index to point to the next position.
var targetPos = Positions[next_position++];

// Get a vector from our position to the target position
var toTarget = targetPos - RigidBody.GetPosition();

// Get the distance to our position and loop until we get "close enough"
while (GetMagnitude(toTarget) >= (Speed / 10.0))
{
try
{
// Calculate a unit vector for the toTarget direction, to multiply by the desired speed.
float mag = (float)GetMagnitude(toTarget);
toTarget.X = toTarget.X / mag;
toTarget.Y = toTarget.Y / mag;
toTarget.Z = toTarget.Z / mag;

RigidBody.SetLinearVelocity(toTarget * Speed);
}
catch (Exception)
{ // If we got a bad force value it could cause an exception in SetLinearVelocity.
// Break out of this inner while to get the next position to work from.
break;
}

// Give our changes a chance to take effect, and the object a chance to move some.
Wait(TimeSpan.FromSeconds(0.1));

// Update the vector to the target based on our new position.
toTarget = targetPos - RigidBody.GetPosition();
}
}
}

// This coroutine will handle TPing anyone that collides with this object to a set position.
void CollisionsCoroutine()
{
while (true)
{
// Wait for a collision with a character
CollisionData data = (CollisionData)WaitFor(RigidBody.Subscribe,Sansar.Simulation.CollisionEventType.cCharacterContact, Sansar.Script.ComponentId.Invalid);

// Check that the collision is good.
if (data.HitObject != null)
{
try
{
// Get a full API for the objet we hit, since we are a part of the scene.
ObjectPrivate objectprivate = ScenePrivate.FindObject(data.HitObject.ObjectId);
// AnimationComponents own the position of characters. To set a person's position we must do it through the animation component.
AnimationComponent anim;
if (objectprivate.TryGetFirstComponent(out anim))
{
// If there is an AnimationComponent use it to set the character's position.
anim.SetPosition(On_Collide_TP_Dest);
}
}
catch (System.Exception e)
{
// If the person is no longer in the scene then a null reference exception is thrown: just ignore it.
if (!(e is System.NullReferenceException))
{
// Log other exceptions.
Log.Write("Got exception trying to set agent position: " + e.ToString());
}
}
}

// Always wait after a collision before checking for more collisions to reduce duplicates
Wait(TimeSpan.FromSeconds(0.2));
}

}
}
Lien direct vers le message - Vieux
Répondre

Outils Rechercher
Rechercher:

Recherche avancée

Thème visuel : Fuseau horaire GMT +2. Il est actuellement 22h10.
   

© JeuxOnLine, le site des MMO, MMORPG et MOBA. Tous droits réservés. - Conditions générales d'utilisation - Conditions d'utilisation des forums - Traitement des données personnelles - ! Signaler un contenu illicite