Yo sigo con mis mallas. ¿Hay alguna manera de calcular automáticamente la superficie de una malla?
(y ya puestos, localizar el centro de gravedad).
¿En Blender?
¿En AutoCAD?
¿En algún otro?
Posdata: no sé si el foro de modelado es el más adecuando.
Yo sigo con mis mallas. ¿Hay alguna manera de calcular automáticamente la superficie de una malla?
(y ya puestos, localizar el centro de gravedad).
¿En Blender?
¿En AutoCAD?
¿En algún otro?
Posdata: no sé si el foro de modelado es el más adecuando.
En Blender, en el entorno de objeto puedes pulsar los botones para que aparezca la longitud de segmentos y el área de las caras.
El centro de gravedad no sé, pero el centro geométrico lo obtienes al seleccionar todos los vértices y en modo objeto pulsas el botón center. El centro del objeto se va al centro geométrico de la malla, sus coordenadas serán ese centro.
Bájate el manual Precision modelling de Blender si te defiendes con el inglés.
(Mirando los dibujos también se entiende sin saber inglés). http://www.blendernation.com/2007/12...ing-pdf-guide/.
"Trate la historia como si todo el proyecto dependiera de ella porque,probablemente,así* sea" (Mark Adams)
Corolario: "La cafeí*na es tu amiga"
Para calcular el volumen: http://www.blendernation.com/2007/05...me-of-objects/.
¿cómo? ¿dónde? ¿me lo explicas para tontos?En Blender, en el entorno de objeto puedes pulsar los botones para que aparezca la longitud de segmentos y el área de las caras.Lo que quiero es la suma de las áreas de todas las caras que tenga la malla.Para calcular el volumen.
Hola, entra en Edit Mode y pulsa f9 (editing) y lo tienes en la pestaña Mesh tools more. Un saludo.¿Cómo? ¿dónde? ¿me lo explicas?
Ahora sí, pero necesito la suma de todos los triángulos.
Ni idea, pero puede que haya algún script para ello.
Copia esto que he hecho en un momento en una text window:
Cuando lo hagas copiado, pulsas Alt+p y te vas a la ventana de la consola de Blender. Ahí tendrás la suma de las áreas de las caras.Código:From Blender import scene, Mesh, window. Scn= scene. Getcurrent(). Ob= scn, getactiveobject(). Me= ob, getdata (Mesh=1). Area_t = 0. For f in me, Faces: Area_t += f, área. Print area_t. Window. Redrawall().
Espero que te sirva, un saludo.
Última edición por Pepius; 17-02-2009 a las 21:15
Qué lujo.
Python manda. Edito el código que se me había colado una identificación.
Muchas gracias. ¿Y unas breves instrucciones para tener el script siempre disponible?
Si no me equivoco, con que copies la cabecera de otro script del mismo grupo (cambiando nombre y tal), ya te aparecerá.
Yo sigo pidiendo: Si ejecuto el script con un cubo de 2x2x2 me dice que el área es 24 (claro, seis caras de 2x2 son 6 por 2x2=24).
Pero con el modelo que tengo que es una escultura de 8m de alto me dice que la superficie de la malla es 42.107.579 (es decir si trabajo en metros, 4 hectareas).
Y lo que me extraña es que la malla me la dieron en milímetros, la escalé por 0,001 para trabajar en pregunta y el área sigue midiendo lo mismo.
Claro si pienso en 42.107.579mm2 la cosa cuadra bastante, porque serían 42m2 que para una escultura de 8m de alto podría ser. Pero me gustaría entender cómo lo hace.
Claro, ya se ha hablado en muchas ocasiones de eso, las medidas en Blender son unidades y esas unidades tú las puedes llamar como quieras (milímetros, hectareas, leguas.) siempre que no cambies de unidad de medida dentro de la misma escena para que todo esté acorde.
No es éso. Un ejemplo: hago dos cubos de lado 2. Si superficio cada uno, miden 24. Desde Edit Mode, escalo uno (selecciono todas las caras y las escalo) a un 50% de su tamaño. Lo superficio y mide 6 (lógico: 6 caras de 1x1).
Desde object mode, escalo el otro, y lo hago del 50% de tamaño: lo superficio y mide 24.
No lo entiendo, supongo que, por un lado está la definición de la malla, y que lo de escalar es un modificador, que cambia el objeto (instancia) como comentabas en el otro mensaje del decimator. (https://www.foro3d.com/f24/blender-r...dxf-71188.html).
¿Es eso?
Creo que en modo objeto cambias el tamaño visual, no las medidas. En el modo editar es donde cambias las medidas realmente.
Efectivamente, como dice Stormrider, la superficie es relativa al tamaño del objeto. Así que para comparar dos objetos estas deben tener el mismo tamaño (como objeto, por supuesto). Para hacer esto, puedes pulsar Alt+s para resetear el escalado de todos los objetos y a partir de ahí ya ajustar su tamaño en Edit Mode.
Prueba esta modificación y dime que tal te va. Ahora tiene en cuenta el tamaño del objeto, pero, eso sí, debe ser igual de grande en x, en y, y en z (hablamos del objeto, claro, no de la malla).
Código:from Blender import scene, Mesh, window. Scn= scene. Getcurrent(). Ob= scn, getactiveobject(). Me= ob, getdata (Mesh=1). Area_t = 0. For f in me, Faces: Area_t += f, Area*(ob, getsize ()[0])*(ob, getsize ()[0]). Print area_t
Funciona: la superficie de las caras de un cubo de 2x2x2 escalado al 50% (es decir, de 1x1x1) es 6, independientemente de si es escalado como malla (Edit Mode) o cómo objeto (object mode). Gracias.Prueba esta modificación y dime que tal te va. Ahora tiene en cuenta el tamaño del objeto, pero, eso sí, debe ser igual de grande en x, en y, y en z (hablamos del objeto, claro, no de la malla).
Estoy desmelenado. Me he atrevido a programar en Python:
En vez de multiplicar dos veces el factor de proporción del objeto en cada área, lo hago sólo al final. Y así puedo dar tres datos: la superficie total de la malla original, lo escalado que está en esa instancia, y la superficie total del objeto una vez escalado.Código:from Blender import scene, Mesh, window. Scn= scene. Getcurrent(). Ob= scn, getactiveobject(). Me= ob, getdata (Mesh=1). Area_t = 0. For f in me, Faces: Area_t += f, área. Print area_t. Print (ob, getsize ()[0]). Print area_t*(ob, getsize ()[0])*(ob, getsize ()[0])
El cambio es tonto en el código, pero es mi primera intervención en un código en Python: