Unity Spain
Post Antiguos => General (Antiguo) => Mensaje iniciado por: Centauro5legs en Septiembre 07, 2016, 04:32:06 AM
¿Como podría cambiar la Seed de un SpeedTree mediante un script C++?
Para quien no lo sepa, "SpeedTree" es una herramienta de Unity, que inicialmente comenzó como una herramienta externa, la cual permite crear árboles proceduralmente, al llenar ciertos parámetros. Y la "Seed" es una variable entre "0" y "9999" de la cual parte el diseño del árbol, por lo que si se alterara dinámicamente la Seed de un SpeedTree, eso provocaría que cada árbol se vea diferente, aunque parta de los mismos parámetros.
Pues el Tree.data devuelve un ScriptableObject, y la documentación no da más datos sobre este ScriptableObject, por lo que no podemos acceder a él.
Buscando en unity answer he encontrado: http://answers.unity3d.com/questions/801198/scriptableobject-tree-data.html (http://answers.unity3d.com/questions/801198/scriptableobject-tree-data.html)
Pero en la API no he encontrado la clase: TreeEditor.TreeData Data = (TreeEditor.TreeData)SpawnedTree.GetComponent<Tree>().data;
De todos modos, si consigues cambiar el seed, cambiaras el seed del Prototipo, y todos las instancias se verán afectadas.
También dentro del TerrainData puedes obtener TreePrototype y TreeInstance: https://docs.unity3d.com/ScriptReference/TreeInstance.html (https://docs.unity3d.com/ScriptReference/TreeInstance.html)
Si modificas TreeInstance solo se verá afectado un árbol, pero solo te deja modificar: color, rotación, ancho escala, etc... Pero todo esto ya se modifica de forma aleatoria desde el Editor.
__________________
En resumen, al parecer el Seed del prototipo solo se puede modificar desde modo Editor. Y no existe la opción del cambiar el Seed de cada instancia. Si que existen assets y otras alternativas al editor de Unity:
http://www.wasabimole.com/procedural-tree/procedural-tree-user-guide/ (http://www.wasabimole.com/procedural-tree/procedural-tree-user-guide/)
http://www.speedtree.com/unity/ (http://www.speedtree.com/unity/)