Fundamentos de las secuencias de comandos de Python en Blender | Simon Van Den Hende | Skillshare

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Fundamentos de las secuencias de comandos de Python en Blender

teacher avatar Simon Van Den Hende, Pipeline Developer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Descripción general

      1:21

    • 2.

      Descripción de la interposición: introducción

      0:53

    • 3.

      Descripción de la interposición: espacio de trabajo de guion

      1:06

    • 4.

      Descripción de la interposición: panel de información

      2:22

    • 5.

      Descripción de la interposición: consola integrada

      1:13

    • 6.

      Descripción de la interposición: editor de texto

      4:14

    • 7.

      Descripción de la interfe: consola de sistema

      3:58

    • 8.

      Crear objetos con código

      16:02

    • 9.

      Limpiar una escena con código

      6:45

    • 10.

      Ideas para construir en el proyecto de concepto de este proyecto

      4:02

    • 11.

      Randomization: controlada: introducción

      1:25

    • 12.

      Randomization controlada (creación de una fea)

      17:03

    • 13.

      Crear una onda de sine introducción

      0:28

    • 14.

      Crear una onda de sinuca.

      13:13

    • 15.

      Lee y visualizar los datos reales: introducción

      0:25

    • 16.

      Leña los datos (.csv )

      10:36

    • 17.

      Leña los datos (.txt )

      15:20

    • 18.

      Crear el gráfico de barras

      13:37

    • 19.

      Agrega etiquetas

      6:59

    • 20.

      Agrega garabatos

      11:32

    • 21.

      Etiquetar las ticks

      13:27

    • 22.

      Crear y al azotar materiales al momento de aleatorización de Randomizing

      6:56

    • 23.

      Randomization de colores controlada

      6:59

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

660

Estudiantes

3

Proyectos

Acerca de esta clase

Este curso te enseñará a Python desde la base.
No se necesita conocimientos previos en Blender ni Python para seguir.

Comenzaremos lento, hablando con todas las herramientas y herramientas y de las que tiene que ofrecer Blender y más. De esta manera, sabes exactamente lo que está disponible y cómo
utilizarlo. con estas funciones construiremos estas trabajaremos con muy fefe

Desde el principio empezamos la codificación. Este curso está muy aplicado, ¡así que prepárate para escribir algún código de estilo!
Pero no tengas miedo. We todos los pasos y los problemas.

Durante este curso crearemos 5 guiones desde cero, cubriendo varios temas de tiempo:

  • Descripción de todas las herramientas y utilities que Blender tiene para ofrecer para ofrecer

  • Usar la consola y los consejos de herramientas de manera de manera eficiente

  • Consulta en primer momento cómo estructurar y agarrar tu código

  • Convertir y aplicar las mejores prácticas en la programación o la guión de guion

  • Estructuras de datos en Python (listón, diccionario, flotado, String, la introducción )

  • Generación de objetos a través de los códigos

  • Generar y modificar Curves a través de código

  • Crear y asignar materiales a través de los códigos

  • Randomization controlada

  • Trabajar con módulos existentes para generar geometría interesantes.

  • Leña y visualizar los datos de .csv y .txt en Blender con Python

  • Muchos más

Si en algún momento que estás perido, no te tengas miedo de llegar a él. Te encantaré ayudarte a superar cualquier tema que encuentres. No estás solo en este proceso.

Empecemos juntos.

Conoce a tu profesor(a)

Teacher Profile Image

Simon Van Den Hende

Pipeline Developer

Profesor(a)

Pipeline Developer with solid experience and a passion for automation.

 

Worked at Outpost VFX on multiple feature films and television projects. Focusing on Pipeline and Data Flow as well as research and development. Main tools I used here were Python, Maya and Houdini

 

Worked at Prompto on the Pipeline and Data Flow. Focusing on Unreal and Blender tools / automation. All done with Python

 

Besides CGI, I have a strong love for web development / programming in general.

 

If there is anything I can help you with, don't hesitate to reach out on my email address: simonvdhende@outlook.com

I look forward to hearing from you!

Ver perfil completo

Level: Beginner

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • Sí
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Descripción general: Aprende a hacer secuencias de comandos Python de calidad de producción hoy obtén calificación experta para mí, pipeline, Director Técnico, ver móvil y terminó con lecciones que se ven afectadas técnicas probadas de producción sin dejar de ser fácil de seguir y al grano, ir más allá de lo justo aprendiendo lo básico a medida que enseño conceptos de programación , flujos de trabajo eficientes, y ejecución final que te hará trabajar mucho más eficientemente. Empezaremos por mirar todos los paneles de codificación y utilidades son ofertas de licuadora son la caja. Y aplicaremos directamente estas herramientas y técnicas el fin de solidificar un proficiente o fresco. No necesitábamos ninguna experiencia en programación o licuadora. Para seguir adelante, guiaré a través de lo básico y descubriremos las posibilidades juntos. Nuestro registro será estructurado y comprensible. Y de esta manera fácilmente podemos empujarnos más allá de lo que jamás seríamos capaces de hacer de otra manera. A medida que nos ponemos cada vez más cómodos de programación y licuadora, Siempre estaremos centrándonos en la dirección del arte para asegurarnos de que nuestros guiones incluyan un montón de detalle artístico y control. El objetivo aquí es crear una base sólida. Al final de este curso, habrás creado cinco guiones desde cero, y estarás bien en tu camino a convertirte en programador experto. Entonces únete a mí y mejora tu antiguo trabajo o aprende algo nuevo hoy. 2. Descripción de la interposición: introducción: Oigan chicos, y es parte del curso y vamos a estar hablando de nuestro entorno de desarrollo, que es donde vamos a estar construyendo nuestros programas y guiones. Vamos a repasar todos los paneles de decodificación que la licuadora tiene para ofrecer y solo hablar sus casos de uso y trampas individuales y solo asegurarnos de que entiendas cómo usarlos porque son realmente, realmente poderosos. Todos ellos realmente sólo mucho más que, que escribir un par de líneas de código. Esto sólo te va a mostrar cómo trabajo como desarrollador de forma interactiva con estos paneles, puedo tomar información de Brian y utilizarla en otro. Entonces esto va a ser muy emocionante. Se va a estar hablando de mi flujo de trabajo en general, pero en un nivel alto, por lo que es muy comprensible para todos. Y luego mientras avanzas por el curso y vas a seguir refiriendo de ida y vuelta a través de estos paneles y me verás usarlos. Pero por ahora solo quiero asegurarme de que entiendas sus usos y solo sepas cuáles son. 3. Descripción de la interposición: espacio de trabajo de guion: De acuerdo, hablemos de nuestro entorno de desarrollo. Acaba de lanzar Blender. Estoy usando la versión 2.81, o él no importa demasiado, solo puedes usar cualquier versión. Yo sí recomiendo usar cualquier cosa por encima de 2.80. Por lo que necesita, estamos pareciendo algo igual. Pero una vez que has puesto una licuadora, deberías ver algo como esto, que está bien. Pero no para scripting. Entonces para scripting o programación, vas a tener que escribir algún tipo de texto o ejecutar algunos comandos que no podemos hacer en este momento. Entonces vamos a tener que mover espacios de trabajo o simplemente paneles incapaces. Pero esto se hace de forma predeterminada si mueve espacios de trabajo. Entonces es más fácil si simplemente íbamos al espacio de trabajo de scripting, que puedes encontrar que el medio superior aquí. Por lo que solo puedes hacer clic en este tipo. Y verás este diseño de aspecto intimidatorio o simplemente paneles de texto y cosas que quizás no hayas visto antes. Pero no tengas miedo de que vaya a estar repasando estos solo asegurándote de que sabes qué, todo lo es. Bien, todo. Entonces, enfoquémonos y hagamos justamente eso. 4. Descripción de la interposición: panel de información: El primer panel del que voy a estar hablando es el pequeñito de aquí abajo. Se puede ver mi cursor. Yo, está escondiendo su nombre ahora mismo, pero es la batalla de info aquí mismo tú, así que bajo scripting, Estos son los tres paneles de los que vamos a estar hablando. El primero va a ser scripting que full panel, lo siento. Entonces a partir de ahora sí se ve un poco vacío. Vi esto ln de cerveza. Pero lo que hace esta batalla, solo hace un seguimiento de tu historia. Pero en oro. Entonces esto es un poco de conceptos abstractos o tal vez todo lo que fue trato. Por lo que solo puedes hacer cualquier, cualquier operación o comando o lo que sea en tu ventana gráfica o simplemente haciendo clic en las cosas como normalmente haces scripting. Y se registrará aquí abajo. Por lo que este es el comando Python real se ejecuta con el fin de obtener exactamente el mismo resultado. Entonces si analizamos esto, déjame tal vez pueda acercarme aquí, así que sólo lo pegaré aquí. Esto, esto es lo que vamos a repasar a un lado. No tengas miedo. mejor sólo tal vez hacer esto un poco más grande. Puedo dar click aquí, aquí puedo controlar. Déjame ver. De acuerdo, así que voy a acercar va a ser un poco más rápido. Entonces si puedes ver que el comandante acaba de ser ejecutado es BP. Por qué dot-dot-dot transform.py traducir, traducir, ¿verdad? Sabemos lo que esto significa. Esto está moviendo algo. Por lo que solo presiono G y lo moví. Y se puede ver tal vez por qué la transformación punto-punto no se traduce. Entonces esto es simplemente mover algo en código Python. Entonces esto es realmente valioso. Puedes incluso, digamos que puedes entrar en modo de edición para enfrentar cara selecta, fase extruida. Y toda tu historia se acaba de registrar aquí abajo. Entonces extrusión, razonable es solo una extrusión simple dentro del código Python. Y simplemente volviendo atrás, rastreando pasos hacia atrás, puedes automatizar realmente cualquier cosa realmente, Este suele ser mi primer ir a si no conozco un determinado comando o cómo, cómo debo hacer algo en Python. Simplemente lo hago manualmente. Y luego mira esta ventana y ve qué hace la licuadora. Una forma codificadora con el fin de lograr lo que acabo de hacer manualmente. 5. Descripción de la interposición: consola integrada: Y el siguiente panel voy a estar hablando de esto, la consola interactiva de Python, la de la izquierda aquí. Ahí se puede ver la consola. Sólo voy a arrastrarlo un poco para hacerlo un poco más grande para que en realidad pudieras leer lo que estoy escribiendo. Este caso aquí básicamente te está permitiendo ejecutar comandos como lo verías aquí. Entonces digamos, déjame empezar de nuevo. Pero digamos que creas un cubo. Se puede ver este es el comando para crear un cubo donde este es el último que hicimos. Puedes copiar esto y puedes colocarlo aquí. Y al presionar Enter, acabas de crear el cubo. Ya puedes ver, a ver solo los quito para que puedas ver eso con más visualmente. Entonces digamos que haces esto, boom, click te aparece. Y esta es solo una forma de probar tus comandos ejecuten realmente rápidamente líneas simples o como un bloque de código de forma interactiva en tu escena para asegurarte de que funcione. Entonces digamos que quiero probar creando una escena o como una cola, que es un poco más grande, talla 20, vale, así es como haces eso. Y yo fui, tú tienes tu línea. Simplemente puedes moverlo al siguiente panel estará hablando, que es el editor de texto real. 6. Descripción de la interposición: editor de texto: Por lo que puedes ver aquí que lleva al editor, lo siento, que es donde estarás cambiando tus comandos. Entonces aquí es básicamente donde estarás escribiendo tu programa o script a esto en tu salida final. Lo principal que hay que recordar de esto es la salida como hace este editor de texto, que es donde me dejas escribir tu guión, es que siempre, siempre, siempre, siempre tienes que importar ser PY. Y quizá por qué te habrías dado cuenta es el prefijo de todos los comandos que estás viendo. Por lo que todo lo que hace la licuadora es impulsado por este paquete BPI. Y así es como tenemos importancia en nuestro guión. Entonces esto es algo que es un pitónico. Básicamente solo estás incluyendo una biblioteca de comandos y código entrando para que sea PY. Y esto permite acceder a todos estos, todos estos comandos y a esta ventana. A lo mejor una cosa más y queremos asegurarnos de este editor de texto es que realmente creas un poco de texto. Entonces cuando lo abras al principio, se verá así y en realidad no se puede escribir nada aquí, pesar de que estoy haciendo clic, no se puede escribir. En realidad tengo que crear un nuevo bloque de datos, nuevo bloque de datos de texto, simplemente haciendo clic en el nuevo, como el icono más, el botón Nuevo aquí. Por lo que esto creará un archivo para usted. Un poco de enfermedades llamadas Texas sólo se almacena internamente en la licuadora. Por lo que solo puedo escribir Importante Big UI aquí contigo. Nunca se puede olvidar, se puede salvar esto. Pero este guión es en realidad una narrativa de guión, una pieza de texto, y quizá lo hagamos un poco, un poco más con esto aquí también. A lo mejor vamos, déjame, déjame mostrarte cómo realmente puedo construir esto. Entonces ahora mismo tengo que encomiar por crear un cubo y aquí, así que si fuera a ejecutar este guión, solo deshazte de todo para que realmente podamos ver lo que está pasando aquí. ¿ Puedo ejecutar el script haciendo clic en este botón ahí? A la derecha solo están presionando todo p como se puede ver ahí, que es un atajos. Entonces déjame hacer eso. cual ejecutará el script, que sólo ejecutará su línea de señal, que esencialmente será lo mismo que hacer esto aquí. Pero el, el principal beneficio de usar esta ventana aquí que en realidad podemos encadenar comandos. Entonces digamos que queremos crearlo y a todos y sacarlo. Por lo que también queremos hacer esto. Simplemente puedes pegar eso ahí dentro. Y ahora tenemos dos comandos en la única ventana, en un solo archivo de texto. Y quiero ejecutar eso. Crearemos una cola, pero luego la moveremos. Por lo que ahora podemos ver que hay un cubo. Están en la escuela, pero de nuevo, deuda espacial. Entonces esto donde solo puedes seguir agregando comandos, agregando cosas a tu script. Si fuera a deshacerme de estos, ejecuté esto, acabo de crear un cubo, Muévelo, es una moldura y todo a la vez. Pero ahora digamos que quieres intentar rotar así que quieres ver, vale, así que este es el comando para rotar. Ahora ya sabes, puedes simplemente ponerlo, ponerlo de nuevo aquí. Y digamos que quieres probarlo primero, podrías ejecutarlo aquí primero. Y luego si giro el cubo actual sin tener que pasar por todos estos, estos comandos cada vez. Entonces podría enfrentarlo aquí y luego ejecutarlo y ver si eso funciona. Ya lo sabes bien porque ahora sabía que lo haré. Pero tal vez no lo hagas. A lo mejor tienes como un guión entero o como un montón de cosas que también pasa, además de crear la cola y pasar a girarla. No siempre quise hacer todo el proceso o solo quieres probar un par de comandos y aislamiento. Simplemente puedes hacer eso. Aquí. Incluso se pueden asignar variables. Podrás almacenar tus datos, todo tipo de cosas. Simplemente puedes hacer todo aquí una vez que sepas lo que funciona y sí lo transfiere al texto real, al guión real. Y entonces así construyes tu, tu guión, tu código, tu programa, como quieras llamarlo. 7. Descripción de la interfe: consola de sistema: Una última ventana que quiero mencionar es la consola del sistema. Por lo que tenemos una representa una consola interactiva aquí abajo. Se puede ver la consola de Python. Hay otra ventana que en realidad se esconde. Entonces no hay unos paquetes reales o no lo es. Y aquí, tu única consola que tenemos aquí es una consola de Python. Si íbamos a ir a Ventana. Y luego aquí se puede ver doble consola del sistema. Y esta es esencialmente la consola o determinable en la que actualmente se está ejecutando esa licuadora. Entonces si fuera a emitir algo a la consola mediante el uso de la función de impresión que está incorporada en la licuadora. Entonces podría decir imprimir, hola mundo, que es presión muy cliché en su palabra inglesa apropiada, pero probablemente lo has visto antes para que puedas imprimir cómo el mundo, y al correr este año en realidad verás que no ha pasado nada. Lo volveré a ejecutar para mostrarte. lo hacen los descriptores en realidad corriendo, pero no pasa nada a pesar de que estoy haciendo algo. Y si aprendieras o leyeras en licuadora, verías que tengo vitaminas o verías que esto en realidad está sacando cosas a la consola donde ves aquí en la consola, no se está generando nada, ¿verdad? Y si miraras la consola del sistema, verías que realmente obtiene salida aquí. Por lo que D lado a lado por un segundo. Digamos que sólo voy a otra cosa. contrario, lo que realmente no importa. Se podía ver todo sólo se pone aquí fuera. Y esto es muy importante notar porque cada vez que pones algo a la consola, realidad vas a tener que mirar en la consola del sistema. Por lo que puedes lanzar toda esta oferta. De verdad no tengo en una cosa que realmente vas a hacer, realidad voy a renunciar a Blender. Creé una nueva ventana de consola. Perdón, está en la pantalla para que acabo de correr blend ahi desde aquí. Entonces ahora esto funciona para mí porque tengo licuadora en mis variables de entorno. También podrías simplemente obtener tu ruta de archivo de licuadora. Entonces sólo voy a mostrarte rápidamente cómo llegar. Por lo general debe estar en sus archivos de programa de unidad C, pero luego su fundación. Y cualquiera que sea la versión que tengas instalada aquí, tendrías licuadora dot EXE. Entonces este es el camino hacia él. Esto es solo editar mi variable de entornos, pero no tienes que pasar por todos esos problemas. También puedes simplemente arrastrar este archivo de salida en tu terminal. Se verá algo así. Hay dos cotizaciones porque espacios de aire en el camino. Así que asegúrate de tener esos. Y luego solo golpear Enter lanzará mezcla allí también. Y de esa manera o consola del sistema es este tipo de aquí abajo en realidad no relacionado con, para mezclarse ahí en absoluto. Es decir, es, es su propia consola, que es mucho más fácil de manejar. Entonces digamos que quiero imprimir Hola mundo otra vez. Asegúrese de que la sintaxis sea correcta. Ejecutar esto. Y ya veremos en nuestra costumbre, quiero decir, en nuestra propia consola, hemos impreso con hola mundo. Y esto es especialmente útil cuando, digamos que la licuadora se bloquea o algo así. Entonces estás ejecutando tu guión y en medio de descript, batidora aplasta, tu terminal también estaría cerrada porque una terminal está ligada a Blender, la terminal en realidad corre dentro de Blender. Cuando usas el predeterminado en el que acabas, solo tienes que lanzar licuadora. Pero uno cuando lanzas licuadora from_id terminal, prestamista corre dentro de este terminal y se renderiza bloqueos. O si la cierro, la terminal aún existe. Entonces eso en realidad es muy útil. En ciertos casos cuando la pregunta de licuadora a veces es pasar solo la ejecuto a través de tu propio terminal de carrera y luego solo para asegurarte de que realmente puedes ver lo que sean las impresiones o a las declaraciones de depuración que sean antes de que se estrelle. 8. Crear objetos con código: Entonces lo primero que vamos a hacer de nuevo, acaba de deshacernos de este cubo. Sé que es algo que hace que la comunidad elimine el cubo predeterminado. Bueno, eso sólo lo va a volver a agregar para ver lo que se necesita para agregarlo. Simplemente copia igual que lo hicimos antes. Nuevo libro de texto creativo o guión o lo que sea, importa VP por igual porque este es nuestro paso necesario que nunca podemos olvidar. Y luego basado el comando r va a dar clic Guardar como se ve aquí, lo que sea. Entonces ahora esencialmente ya hemos escrito el guión. Por lo que hemos escrito un nodo de script, voy a crear un cubo. Entonces si ves si lo ejecuto presionando todo tu, quemando los guiones y el derecho, así el outliner, puedes ver el cubo obtiene ediciones cada vez que ejecuto el script. Entonces, ya sabes, eso es algo, está bien. Pero hagámoslo un poco más interesante. Entonces lo que queremos hacer es que ellos lean una, unas posiciones aleatorias. Entonces básicamente solo queremos, quiero decir, hay, hay múltiples formas de hacer esto. Por supuesto, siempre hay múltiples formas de hacer cualquier cosa con scripting o programación o, y licuadora, incluso a veces en general. Entonces lo que podríamos hacer es crear un cubo y luego traducirlo. Entonces muévete. Esa es una forma de hacerlo con otra manera. Si miras de cerca el comando cube add, tal vez sacando esto a poco, podemos ver que en realidad se puede especificar el tamaño y la ubicación. Al crear el cubo. Esto es lo mismo que si para crear un QC aquí, en realidad se puede asignar, quiero decir, en realidad se pueden cambiar estos valores aquí también. Hazlo más grande. Y ven aquí nuestras actualizaciones de comentarios. Entonces si fuera a copiar eso y ponerlo junto a él, se puede ver que el tamaño se puede cambiar cambiando este valor. Y nuestra ubicación se puede cambiar cambiando estos valores. Por lo que puedes ver estas son coordenadas x, y, y z. Entonces si fuera a deshacerme de todo otra vez y deshacerme de este tipo. Entonces digamos que quiero, quiero crear un cubo. Entonces de nuevo, cada vez que quieras modificar o hacer algo en esta ventana, tienes que asegurarte de que tu cursor esté aquí. Entonces si soy mi cursor está aquí y hago retroceso, no va a hacer nada. Viernes, ¿qué hay aquí? Yo soy expatriados, son iguales. Entonces esto es un, algo algo de tallo también, hay que acostumbrarse. Entonces si fuera a ejecutar esto, ahora, hazlo es, tienes un cubo de tamaño 3.9 a o aquí. Pero en realidad es un normalizado pero el, en realidad, si se mide esto, esto debería ser 3.92 y la ubicación es 9.39 en el eje x, que se puede ver y ver aquí también. Entonces de esta manera podemos realmente fácilmente. Modifica nuestra QQ cuando lo creemos. Entonces lo que queremos hacer es en realidad en lugar de bloquear esta ubicación a un cierto valor, ya sea 0 o nueve o lo que sea, queremos tener eso aleatorizado. Por lo que para poder aleatorizar , evita la biblioteca aleatoria. Este es un paquete al igual que BPI.com con Blender, viene con Python en general. Y esto nos permite generar números aleatorios. Entonces tal vez pueda mostrarte imprimiendo una función uniforme. Si fuera a imprimir esto. O sea, ejecutar esto no te va a mostrar nada. En realidad tienes que ir a abrir tu consola, lo cual probablemente va a querer hacer como ventana, consola del sistema firewall. Y debería aparecer la ventana de la consola. Do starlight de nuevo se ha ido y luego lo trae de vuelta. De acuerdo, así que acabo de imprimir un número aleatorio entre 01. Si volviera a hacer esto, imprimiré este. Hazlo otra vez. Por lo que puedes ver que es solo cualquier número aleatorio entre 01 también podría probar la celda ejecutándola en la consola interactiva. En realidad, esta es probablemente mejor manera de hacerlo. Tienes que reimportarlo, claro. Entonces otra vez, estas, estas dos ventanas, no están relacionadas entre sí en absoluto. No se hablan entre sí. Todas las variables que tienes aquí que dicen que creo una variable, asigno a 250 si fuera a imprimir 50, y aquí imprimo VAR, por ejemplo. ¿ En realidad va a decir nombre VAR no está definido? Si yo fuera a imprimir barra aquí, se imprimiría 50 porque en este bit, nariz mientras que var es y aquí no lo hace. Entonces eso es algo a tener en cuenta. Pero esa es la sembrada un montón de veces presionando la flecha arriba en nuestra, en nuestras flechas. En la flecha arriba, puedes tirar hacia atrás comandos recientes. Puedes simplemente recorrer un poco tu historia presionando hacia arriba y hacia abajo. solo puedas seguir ejecutando a este tipo. puede ver que siempre devolverá un valor entre 01. Pero si fuera a decir 010, me va a dar un valor entre 010 es muy útil para menos 1010. Entonces creo que ese punto es claro. Por lo que podemos utilizar este valor aleatorio y en nuestra función de agregar cubo. Entonces digamos que esto es siempre y cuando realmente dividamos esto línea por línea, realidad tampoco conocemos a este tipo. Si fueras a ir, veremos las referencias. A lo mejor, hagamos eso juntos. Entonces hubo un enorme Whew, lo siento, dije eso. Una enorme licuadora. Página web de Python API. Entonces este tipo de aquí probablemente va a querer marcar a este tipo. Esto contiene toda la información sobre BPI. Entonces si buscara aquí nuestra función, solo copiarla y pegarla aquí. Y la búsqueda. Verás la documentación real sobre esta función. Para que puedas ver todos los parámetros que vimos antes, redimensionar, entrar en Modo Editar, ubicación, Rotación. Ninguna de estas cosas está disponible dentro de esta función. Y luego se puede ver el valor por defecto. Por lo que estos valores predeterminados ordenados. Entonces si no lo fuera, si no establecería el tamaño, sólo se tomarán dos. Y si no especificaría, y a través del modo Editar, irá a falso. Y esto es esencialmente solo repetir el defecto para que pueda retomarlo. Pero esto podría ser un poco demasiado ya. Entonces tal vez probablemente volveremos a entrar en las documentaciones y cómo leer esto correctamente. Yo sólo sé que existe y todo el, todo lo que tiene que ver con ser PY o cualquier otro módulo de licuadora que esté listado aquí abajo. Según lo explicado en este sitio web, en la API, solo hay una cosa que hay que notar es la versión. Siempre vas a estar queriendo, queriendo usar la última versión o aún mejor solo a la versión que estás usando una licuadora. Entonces estoy usando Blender versión 2.81, pero estoy usando los docs API de 2.83. Y si algo cambia entre 2.832.81, en realidad voy a tener a la versión más nueva mientras estoy usando la versión anterior. Pero las diferencias entre 2.812.83 o tan pequeñas que realmente no importa. Es decir, al menos en un punto de vista de scripting, pero generalmente es mejor, mejor práctica simplemente usar la última versión siempre. Para que a un lado, volvamos aquí. Entonces si fuéramos a ejecutar esto, eso debería funcionar. Solo estamos creando cubos en la ubicación 00 para el tamaño 3.92. Entonces si fuera a poner esto, entonces se puede ver cómo eso afecta al QC se crea. ¿ Está bien? Pero la cosa es que no siempre queremos usar el tamaño 00 o 0. Podemos bloquearlo a medida que se sesga hacia el default. Podemos incluso dejarlo fuera si estás acostumbrado, pero solo lo dejaré adentro. Pero por eso queremos, queremos ser, queremos cambiar esta ubicación. Entonces tomemos de nuevo nuestro valor aleatorio. Entonces llamemos a este valor aleatorio y asignemos nuestro valor aleatorio a esta variable. Entonces esto es esencialmente cómo usar variables que podrían ser un poco de un abstracto, conceptos abstractos variables, pero es realmente simple. Esencialmente es sólo asignar un valor. Esto puede ser de cualquier tipo a sólo una representación de palabras. Por lo que generalmente es una buena práctica darle un nombre significativo. Entonces esto es esencialmente, Sí, este es un valor aleatorio, se podría decir entre menos 1010 o lo que sea, pero los valores aleatorios más que suficientes. Entonces esto es autoexplicativo y esta es una buena práctica. Entonces vamos, vamos a usarla. Pongamos esto en lugar de R 0. Entonces ahora en lugar de una referencia 0 a son números generados aleatoriamente. Entonces esto. Bit de código que devuelven algún valor entre 1010 negativo. Entonces digamos que devuelve 9.93. El valor aleatorio será igual a 3.9. Entonces si fuera a decir mi ubicación es igual a 3.93.93.9, o cualquier valor entre diez negativos. Y luego a ver si ejecuto esto, ya verás, resulta que el valor aleatorio que se generó con esta función fue negativo 3.56. Y entonces nuestro q fue creado en ese lugar. O para volver a hacerlo. Y se tomará nu sobre n valor y se creará un nuevo cubo en esa ubicación. Lo hicimos como un montón de veces. Veremos recrear estos cubos, pero todos están en esta línea recta. Entonces esto en realidad no es todo lo que quieres escribir. Esto es que queremos que estén justo por todas partes. Big R cubed, solo un montón de cubos dentro. Pero debido a que tomamos el mismo valor aleatorio para los tres accesos, siempre los crearemos en esta línea tridimensional. Entonces lo que queremos hacer es crear tres números individuales con tres valores aleatorios, uno para x, uno para y, y otro para Zed. Entonces hagámoslo. Podemos duplicar cualquier línea que nuestro cursor elevó presionando el control D. Así que lo hice dos veces. Y luego renombraré el valor porque en realidad nunca se pueden tener nombres de variables duplicados. Bueno, en Python puedes, pero solo anulará la anterior. Entonces lo asignaré a través, digamos uno. Entonces se sobrescribirá a lo que este regrese, y luego se sobrescribirá de nuevo. Por lo que esencialmente sigue siendo el mismo tiempo. Me refiero al mismo valor sólo para comer tiempos. Si fuera a llamar a este valor aleatorio X o Y o Z. Y cambiar a estos tipos en consecuencia. Lo cual es importante porque valor aleatorio en este punto que ya no existe. Es solo valor aleatorio X, Y, y Z en valor aleatorio ahora se va a crear. Entonces no va a saber qué es. Entonces si yo fuera a dirigir a este tipo, tenemos un cubo en una ubicación verdaderamente aleatoria dentro de nuestra dendrita, entonces la celda de cuadrícula solo sería spam. Estaré ahí sólo para mostrarte un poco más de cubos. Entonces esta línea es la que teníamos antes. Y ahora con nuestros números aleatorios individuales, en realidad tenemos un resultado bonito. Entonces vamos a deshacernos de este olor visto. A lo mejor lo vuelves a ejecutar un par de veces. Para que puedas ver cómo se ve eso. De acuerdo, así que este es un script de cubo generado aleatoriamente, pero de nuevo, todavía no tenemos 100 cubos o 500 grupos, que es donde el scripting es tan poderoso, todavía tenemos que presionar esta cosa una y otra vez. Entonces con el fin de moverse por las etiquetas, voy a crear un bucle for. Entonces para las personas que son nuevas en la programación por completo, un bucle for es esencialmente una estructura de programación que ejecutará cierta, como ciertas líneas de código una cierta cantidad de tiempo. Entonces digamos que creo aquí un bucle for para escribirlo. Entonces voy a recorrer. Es decir, voy a ejecutar este bit de código 100 veces. Este es esencialmente el concepto de un bucle for. Entonces, cualesquiera bits de código que estén dentro del bucle for se ejecutarán x cantidad de veces. Entonces digamos que cantidad de cubos es igual a un 100. Y entonces puedo simplemente intercambiar estos alrededor. Por lo que voy a ir más de 100 veces y sólo voy a imprimir i. soy básicamente esta variable cambiante que representará la iteración actual. Entonces vamos a iterar a un 100 veces, y entonces realmente voy a hacer un seguimiento de cuál es la duración en la que estamos actualmente. Esto es sólo con fines de demostración. Por lo que me aseguraré de que la discordia sea ignorada por ahora. Y yo, lo siento, correré esto. Soy en realidad devuelve un error. Entonces veamos lo que eso dice. Ok, tengo que poner el for i en rango. Lo siento. Entonces si ejecuto esto, veremos que esta variable es i cambia para cada iteración. Por lo que empieza a ser 0, y luego sólo se incrementa hasta llegar a 99. Entonces para este punto, hemos ejecutado este código un 100 veces. Entonces si realmente fuera a escribir script r cube y escuchar, ejecutar esto, tendremos un 100 cubos igual que eso fuera de la caja. Entonces si fuera a quitarlos a todos, correrlo de nuevo. A 100 cubos, todos con ubicaciones aleatorias dentro de esta cuadrícula de diez por diez en las tres x's. Por lo que al usar este for loop, puedes crear mucha geometría a la vez. Entonces solo averiguas cómo hacerlo una vez. Y ahora eres solo un envoltorio de que este extremo es estructura de cuatro bucle y todo lo que se sangrará, retómalo. Esto es, éste es uno. Por lo que una ficha. Todo en este nivel de sangría se ejecutará 100 veces o lo que quiera tiempos que usted especifique aquí. Entonces si quería geniales 50 cubos, borrar todo. O en esto tendremos 50 cubos. Por lo que puedes ver aquí. 9. Limpiar una escena con código: Una cosa más que me gustaría mencionar es que cada vez que ejecutamos este guión, ese r cubed z una pila encima del otro. Entonces lo que debemos hacer es simplemente seleccionar todo lo que se borre a su alrededor. Está bien, bueno eso está bien. Vamos a crear 50 y abrir. Y con este guión no importa tanto, pero a veces simplemente no quieres siempre, cuando estás como crear alguna geometría de procedimiento con scripting o calificar otra cosa. Siempre quieres tener que entrar y borrar todo y, ya sabes, es un trabajo tedioso que estás tratando de evitar con scripting. Por lo que es una especie de conseguido su intuitiva si continuamente tienes que hacer un trabajo tedioso. Entonces sólo voy a mostrarte rápidamente cómo no tener que hacer eso. Así que párennos, en realidad vamos a entrar aquí y somos consola interactiva porque vamos a estar probando cosas, tratando de averiguarlo. Lo primero que voy a estar mostrándote es cómo agarrar todos los objetos de tu escena. Entonces sólo tienes que ir Hombre se llama BPO I dot-dot-dot objetos. Por lo que se puede ver actualmente hay 50 objetos en la escena, pero simplemente normal porque creé 250 cubos y borré todo antes. Digamos que creo un 100. Ahora, ejecuta eso. Pulse la flecha arriba, puede ejecutar los comandos anteriores en consola R o consola interactiva clima. Y ahora podemos ver que había un 150 objetos, especie de 50 que había antes y un 100 extra porque uso concedió más. Pero esencialmente sólo queremos tener un 100 en este punto. Entonces lo que podríamos hacer es que pudiéramos enumerar. Por lo que ahora tenemos una lista de todos estos objetos. Simplemente podemos quitarlos a todos. Y lo vamos a hacer otra vez con el bucle for. Entonces, ¿qué hicimos nuestro for loop de esta manera? En realidad podríamos especificar cuántas veces queremos bucear. Sabemos que fui a un 100 y ya sabes, cada vez que lo ejecutas, vives un 100 cubos. Pero en este punto, ya sabes, no sabes cuántos objetos vamos a estar en la escena. Se podría decir, bueno, sí, porque yo sé 100 otra vez, ya sabes, quita todo pero entonces si quieres ponerlo a 50, ya no va a funcionar. Realmente no es dinámico este peso. Entonces esencialmente lo que queremos hacer es querer iterar sobre muchos objetos que hay, pero sin saber cuántos objetos hay primero. Entonces no quiero decir para i en rango de 150, porque no siempre van a haber 150 objetos. Pero lo que podríamos hacer es decir para el objeto actual BY objetos de datos de punto. Y vamos sólo por ahora sólo imprime objeto actual. Entonces lo que hacemos aquí me hace desplazar todo el camino arriba para el objeto actual en los objetos punto-punto APY. Entonces para cada objeto en esta colección de objetos o en este todavía, y esta colección de objetos. Muéstrame tu principal. Entonces como yo era nuestra variable que haría un seguimiento de nuestra iteración actual. Esta variable aquí da huelga sobre nuestro artículo actual dentro de esta colección. Entonces esto es básicamente una matriz o una lista para ustedes programadores por ahí. Y esto es básicamente cada elemento dentro de esa lista. Entonces si tienes una lista de objetos, este es el elemento actual, el objeto actual que estás iterando actualmente. Entonces sea cual sea el objeto que sea este, es parte de esta colección. Entonces al usar esto, puedes ver que tengo todos estos cubos. Al igual que puedo agarrar todos los cubos. Entonces otra vez, para mi objeto y ese objeto, así que para cada objeto de la colección de objetos, quiero eliminarlo esencialmente, ¿no? Quieren deshacerse de todas las teorías de objetos. Por lo que para esto podemos hacer PPA punto-punto-punto y objeto dot remove. Y luego se desea especificar el objeto que tiene que ser eliminado, que es el objeto actual. Y así como eso, todo se ha ido. Todo el objeto de esta escena se ha ido. Ahora esto también eliminará cámaras y luces porque también son objetos, ¿no? Entonces si volviera a hacer esto, la cámara se habrá ido. Por lo que hay que tener eso en cuenta para quitarlo todo. También podrías enumerar mallas, materiales, imágenes, prácticamente todo. Entonces si fuera a ir a los datos de puntos BPI y luego presionar el espacio de control, que es un truco realmente genial. Te mostrará todas las cosas que hay dentro de estos datos. Para que puedas tener textura, sonidos, pantallas, mallas, materiales, luz. Entonces se llega a tan básicamente todo lo que tiene. Pero solo haremos objetos por ahora. Entonces el código que escribimos aquí realmente funciona. Es dinámico. Funcionará para cualquier cantidad de objetos. Entonces, en realidad ahora incluyamos en nuestro guión. Entonces, ¿cómo debemos hacer eso? Simplemente podemos hacerlo antes. Entonces igual que hicimos nosotros. Y alineado apropiadamente, boom, ahora está en su lugar. Por lo que cada script se ejecutará de la línea uno a la línea, sólo la última línea. Entonces abajo uno a través de desistir el maíz lógicamente. Por lo que vendrá aquí, mirará todos los objetos de la escena, los eliminará todos, y luego creará unos 100 nuevos. Si fuera a hacer esto, tendría un 100 objetos es lo mismo que sería antes. Si lo hago ahora, quiero que llegues a un 100 objetos diferentes. Si mirara aquí muy rápido, solo imprimiendo todos nuestros objetos, vería que sigue siendo una lista de un 100. Y puedo ejecutar este 2020 veces o cuantas veces siempre estarás debajo de él. O para cambiar esto a 50. Ahora tendré 50 y se eliminarán todos los cientos. Piratas por cada 500 otra vez. En primer lugar borrará los 50, luego creará 500 nuevos. Pero no tienes que especificar cuántos objetos habrá al inicio porque nunca podrás saber. Al igual que Now, no noto 500 que tal vez puedan ser astutos y crear uno. Y podría crear un círculo, sabemos que es correcto. Pero si lo volviera a ejecutar y este es mi amigo es un poco demasiado. Y pasar a los círculos también se ha ido porque todo siempre se va a ir y se va a sustituir por alrededor de él. 10. Ideas para construir en el proyecto de concepto de este proyecto: De acuerdo, así que hemos llegado bastante lejos, ya están en este primer capítulo del curso. Pero me gustaría que ustedes profundizaran realmente su comprensión de lo que estamos haciendo aquí es probar algo ustedes mismos. Entonces generalmente hay una mejor práctica para simplemente, ya sabes, ir, salir por tu cuenta y probar algunas cosas diferentes tal vez mientras estás creando un desprecio inspirado o las tienes, ya sabes, solo inspiración para hacer algo más. Y me gustaría que procediéramos que ahora veamos si se puede sumar a esto. Algo que podría sugerir es averiguar cómo aleatorizar su rotación también. Entonces como si ahora es solo localizaciones aleatorias y puedes ver si colocas nuestro lugar, tu cámara en algún lugar de aquí. Nadie luce bastante interesante. Pero para llevar esto al siguiente nivel, tal vez puedas aleatorizar más estrella. Por lo que esto podría ser una rotación, esto podría ser escala. Esto podría incluso ser sí, esto podría ser cualquier cosa realmente solo no voy a decir demasiado porque no quiero limitar tu imaginación. Así que simplemente pasa por lo que agregarías a esto y luego pruébalo, busca cosas en la documentación. Por lo que una vez más, rápidamente enchufó este enlace a la IE. Por lo que licuadora, Python API dio un paso adelante y, y Google. Y obtendrás la más reciente. Asegúrate de que estás en las más recientes es en realidad 2.90 ahora, ya que creo que desde hace un par de días donde el cuatro de septiembre ahora mismo. Entonces no voy a hacer el cambio del curso MIT. A lo mejor yo, sólo buscaré en el registro de cambios y si algo cambia, los mantendré actualizados. Pero por ahora, la API es idéntica a 0.812.832.9 para que todas las cosas que estamos cubriendo en este curso van a funcionar. Todo va a ser lo mismo, así que no te preocupes por eso. Pero sí, aquí se puede simplemente un poco de búsqueda él mismo puede darse cuenta rápidamente, copiar a este tipo aquí, ver qué podemos hacer con esto. Entonces esto soy yo sólo voy a mostrarte cómo podrías tomar esto. Entonces podemos ver que hay un tamaño que es uno podría ser aleatorizado. Por lo que esto se acaba de establecer en dos. Aquí, también se establece en dos. Entonces este es solo un número estático, por lo que puedes aleatorizarlo de la misma manera que lo hacemos aquí. Ellos pueden como que simplemente escojan sus límites. Y de esa manera realmente puedes agregar más dimensiones a esta ubicación, tu rotación o escala otra vez, por lo que esto se establece en 0, cual es un poco raro porque generalmente cuando escalas a 0, simplemente lo haces infinitamente pequeño. Simplemente debes escalar por una para mantener las mismas dimensiones. Esto es sólo un multiplicador. Y así esto es un poco confuso. Entonces no me preocuparía por este si quieres aleatorizar el tamaño, solo lo haría por aquí. Esto sí, es, se trata de una escala uniforme. Por lo que esto es sólo una escala de cada X es igual. Obtienes tal vez algo que podrías hacer es escalarlo y decir algo y luego sellarlo. ¿Y por qué un poquito? Vamos a matarlos, una x, otra cosa. Por lo que realmente obtienes estas formas rectangulares. Entonces yo, si usamos el parámetro de tamaño, siempre vas a tener un cubo. Entonces eso es algo a tener en cuenta. Siempre puedes mirar aquí y ver lo que hicimos. Algo así como hacer algunas cosas interesantes y luego traté de guiarlo. Tan solo diviértete un poco y solo prueba algunas cosas sobre ti mismo. Esto es un realmente, realmente va a ser la diferencia entre un, tú solo viendo el curso y realmente entendiendo de lo que hablamos, realmente aplicando lo que hablamos. Siempre es bueno tratar de crear tus propias cosas. Y si lo haces, asegúrate de enviarlo a través de correo electrónico o a través de mis sociales, habrá una descripción del curso. Siempre me interesa mucho ver cómo ustedes chicos, uh, o simplemente crean un pie con las cosas que traté de enseñar, ordenar eso sería realmente genial ver realmente cómo ustedes chicos tener su propia mirada en lo que él ha creado y cómo ustedes chicos creo que se puede mejorar. 11. Randomization: controlada: introducción: Y para llevar el procedimialismo y la aleatorización al siguiente nivel, hay que pensar en cuándo y dónde usarlo. A veces generalmente es mejor aleatorizar algo porque como humanos, siempre estamos tratando de encontrar Patrones Reconocibles. Y así es como nosotros los artistas, la forma en que funciona nuestro cerebro. Siempre tratamos de reconocer patrones. Siempre tratamos de crear patrones. E incluso cuando intentas crear un 100, jugando a través, siempre enfocándose en dos o tres. Pero luego con el tiempo te acabas de llegar a ser reconocible y se ha vuelto repetitivo. Y eso son sólo problemas con los que una máquina no tiene que lidiar, que son puramente matemáticos. Es decir, si tú, si le pides a una máquina un número entre 01, no piensa en, solo te da el número y simplemente sigue adelante. Entonces si le preguntas un 100 veces, obtendrás un 100 valores aleatorios. Cuando le preguntes a un humano, siempre habrá, siempre habrá algún tipo de patrón en el interior. Y eso es exactamente lo que tenemos que tratar de evitar. Y eso es exactamente lo que Python y licuadora, y me refiero sólo al procedialismo y la aleatorización y los generalistas. Tan bueno. No está siendo sesgado como no predecible, no siendo reconocible. Y cuando realmente ves ese valor. Y entonces realmente puedes empujarlo al siguiente nivel. 12. Randomization controlada (creación de una fea): Entonces esto es lo que van a estar haciendo y este capítulo, es barda completamente al azar. Se puede ver que hay algún desplazamiento en la rotación y luego la altura también. Por lo que esto se ve estéticamente agradable, es realmente fácil de hacer. Entonces sí, eso es lo que vamos a ser el ancho. Empecemos con un nuevo C puede realmente comprar por completo ir a scripting como estamos acostumbrados a este momento. Vamos a arrastrar un poco esto, guárdalo. Hacer todos los elementos esenciales antes de que realmente podamos empezar a crear un guión importante beat POR algunas de estas cosas terapéuticas. Y ahora estamos listos. Entonces empecemos realmente poniendo las menos cosas que hicimos en el capítulo anterior, que es limpiar la escena. Entonces si no recordamos por completo, lo repetiré. Entonces lo que haremos es agarrar cada objeto de la escena. Entonces para que los objetos sean DY dot-dot-dot objetos, y luego lo eliminaremos. Entonces si sumo los textos, eso sólo va a deshacerme de todo cada vez que hay mucho más fácil mientras estás trabajando. O sea, no digo que debas irte. O en realidad publicas este guión o cuando realmente empiezas a usarlo porque eres justo, tal vez quieras crear una barda en la escena que ya existe y solo quieres no querer deshacerte de todo, ¿verdad? Pero por ahora es realmente tedioso quitar siempre o creamos porque quiero decir, desde la primera iteración vamos a crear una cola. Y como vas a ser molesto quitarlo siempre. Entonces, dicho eso, empecemos por crear nuestro cubo. Entonces otra vez, ya deberías notar ya este comando, pero incluso me olvido muy a menudo. Entonces pongámoslo de nuevo, creando un cubo de tamaño dos y ubicación 000. Y en realidad es mover esto hacia abajo a uno. Es un poco más fácil trabajar con y luego entrar en modo Editar como vimos antes, se puede eliminar. Por lo que esto seguirá funcionando. Y ahora sólo tenemos un cubo más pequeño. Observe cómo desapareció el grande, lo cual es impresionante. Es sólo una cosita tan pequeña, pero sí, solo te mantiene cuerdo como persona. Eso te lo podría decir. Está bien. Pero esto no se parece mucho a blanco, ¿verdad? Por lo que para que parezca un espacio en blanco, refiere necesidad de moverlo hacia arriba. Por supuesto, quiero decir, escalar hacia arriba. Entonces como Z, digamos diez centímetros, que es un poco mucho, pero quiero decir, Eso está bien. Es tal vez escalarlo hacia abajo en la x. Y esto mucho, que es 0.25. así que de nuevo, vas a tener que seguir usando estos, estos, estos paneles. Simplemente mezclarlos todo el tiempo. Es súper útil. Entonces si realmente damos un paso atrás y vemos qué hicimos, así que lo escalamos justo entonces. Y ahí lo bajamos en 0.25 y la x. Así que así es como realmente podemos crear eso. Entonces vamos a copiar aquí. Y eso es proporcional en realidad lo que podemos ver, tal vez puedan notar palo es el PEC. Otra vez. Este es el mismo comando que ejecutamos dos veces uno tras otro. Y luego una vez ejecutamos 3D más riesgoso que los ceros y unos más arriesgados que la x Así que probablemente podamos combinar estos dos. Entonces, vamos a deshacernos de éste. Veamos si eso realmente funcionó. Entonces ahora solo creas una cola de tamaño uno y luego la escalamos para colocarla a menos que tal vez la muevas hacia arriba por cinco, que será la mitad de lo que sea esto, sea cual sea el artículo. Entonces eso es eso. Entonces esencialmente hemos creado un espacio en blanco. Se ve bien. La báscula está completamente equivocada. No se van a preocupar por eso. Pero justo como una nota al margen. Pero sí, vale, entonces esta es básicamente la receta de cómo crear un espacio en blanco. Entonces tal vez deberíamos agrupar esto en función. Yo lo voy a repasar. Es bastante rápido porque sólo hay agrupación de código. Por ahora. No hay que saber nada más que distrito siendo agrupación de código. Entonces digamos Create Blank y se pone todo esto dentro. Entonces si lo ejecutamos ahora, en realidad sí, no va a pasar nada. Pero si llamamos a nuestra función, entonces realmente ejecutará este código. Por lo que la discordia sólo se ejecuta cuando llamamos a esta función, que es genial. Entonces vamos al paso uno. Esto ya se ve bien. Ahora tratemos de caret, digamos diez espacios en blanco. Entonces de nuevo, como hicimos con los cubos y el primer capítulo, vamos a recorrer una cierta cantidad de valores. Entonces digamos para i en rango de ellos. ¿Quieres crear un espacio en blanco. Por ahora deberíamos tener diez enlaces. Por supuesto, no queremos que todos estén en la misma ubicación, así que queremos tenerlos compensados. ¿ Y por qué esta cantidad? Muy bien, entonces sabemos que el ancho real, vamos a ver si esto es un ancho. Por mucho que esté en el eje y va a ser uno. Porque creamos esto un cubo de tamaño uno. Y no lo bajamos. Y, así y sigue siendo como yo sólo escalando por un factor de uno. Por lo que esencialmente se está multiplicando uno por uno, que sigue siendo uno. Entonces sabemos que ésta es una. Entonces si creamos un espacio en blanco y luego lo movemos por uno, o digamos, identifiquemos realmente una brecha. Entonces digamos que queremos tener obtenemos el 0.1. apenas 10% sobre el espesor. Entonces digamos una brecha más. Por lo que siempre queremos hacer uno porque esa es solo la cantidad sobre la anterior. Y yo sólo quiero añadir un poco de una brecha de 0.1. Entonces si fuéramos a hacer esto, Eso no funcionó porque esto en realidad no lo está moviendo. Esto no es en realidad un delta y, esto en realidad es una, una y real. entonces esta es la nueva posición y, que en realidad no es lo que queremos. Probablemente deberíamos usar yo, ¿verdad? Por lo que podemos hacer i veces uno. Y yo sólo quiero incrementalmente a brecha. Ahí vamos. Entonces ahora tenemos diez espacios en blanco como tal vez lo hagan un poco más grande de una gorra. No estoy seguro de que esto sea que realmente estés trabajando. No creo que sea como tal vez no a través esta brecha y lo multiplico por i. Entonces, ¿por qué la iteración actual? Eso es aún peor, ¿verdad? Y yo soy el indicado. Está bien, ahí vamos. Por lo que ahora tenemos nuestros tablones y tenemos un pequeño hueco entre 0.1.2. Podría ser un poco demasiado grande. De acuerdo, así que esto no se ve demasiado mal, ¿verdad? Más agradable mirando cerca, pero es un poco demasiado perfecto. Y así es como es como un 3D artistas a lo realmente notable y es como herramienta decisiones perfectas para ilustrar todo. Entonces ahí es donde viene la aleatoriedad en Suez lo como humano otra vez, es realmente difícil agarrar esta fase de stop y luego esto moverlo hacia fuera y tomar un poco para, para tenerlo un poco compensado. Entonces eso es lo que vamos a estar tratando de evitar ahora mismo. Entonces empecemos. Entonces lo que queremos hacer por cada espacio en blanco es que queremos tener altura acostumbrada. Por lo que el hidrógeno muy cada vez. Por lo que en nuestro bucle, declararemos una variable y estableceremos nuestra altura en diez. Entonces, por ahora, vamos a mantenerlo en realidad una variable codificada o no. Es decir, sigue siendo una variable que es una, es un número establecido, así que no va a cambiar. Y eso es realmente pasar esto en. Recrea son pestañear. Entonces yo apretado, apretado. Por lo que esta altura va a estar aguantando aquí. Queremos reemplazar nuestra altura inicial. Por lo que nuestra escala de zed, que estaba configurando la altura, ya que estamos usando una. Entonces esto ahora seguirá siendo el mismo resultado, pero usar esta variable aquí nos dará un poco más de control, sobre todo al pasarla por esta función. Entonces si fuéramos a ejecutar exactamente esto mismo, y ahora si quiero cambiarlo a cualquiera de los 15, esto va a pasar aquí. Ahora por supuesto, lo estábamos moviendo hacia arriba cinco ya que nuestra altura se fijó estéticamente en diez. Pero ahora que cambiamos a 15, ya no se ve bien porque en realidad usarías 7.5. Si fuera a correr esto, es de nuevo, se va a alinear. Sí. Pero no siempre queremos. Es decir, ya que queremos cambiar esto, también tenemos que cambiar esto. Por lo que es sólo la mitad de lo que sea la altura. Entonces esto funcionará sin importar lo que ponga aquí, lo, solo siempre lo alinearemos al fondo. Y eso es realmente, realmente importante. Casi nunca cuando uso estos números mágicos. Igual que, como incluso aquí así, 0.25. no es bueno tener esto aquí dentro. Deberíamos tener esto como una variable de espesor. De acuerdo, lo siento, espesor aquí. Y por supuesto tenemos que poner espesor aquí también. Entonces eso es un Causa 0.25. y esencialmente sigue siendo el mismo código. Hace exactamente lo mismo, pero es mucho más legible. Es mucho más integral. Si lo ejecutamos de nuevo y sin embargo este es el mismo desenlace. Pero es, es mucho más claro y luego solo escalar en la x, y. y ahora sabes que esto es un grosor. De acuerdo, así que vamos a ponerlo arriba. Entonces la cosa es que, sin embargo, queremos tener la altura variable, esto tiene que ser dinámico, es tiene que cambiar por cada blanco. Entonces de nuevo, vamos a estar usando nuestras funciones aleatorias está bien, vamos a importar al azar. Y ahora en lugar de enviarlo a diez, vamos a estar, vamos a elegir un valor entre 910. Digamos. A lo mejor el 911 podría ser demasiado. Uniforme de punto aleatorio. Por supuesto, este es el, el nombre real de la función. Y se puede ver ya los espacios en blanco están ahora ferrying altura podría ser un poco demasiado. Entonces eso es como un factor de uno. Por lo que la diferencia entre el mínimo máximo es una. Por lo que veremos un máximo cambio de altura. Uno. ¿Todavía podría ser de él demasiado. Hagamos Component_2 o algo así. Se puede jugar con estos números, ¿verdad? Estos son sólo el espesor es finito. Es como un poco, un poco variable. De acuerdo, así que esto es bueno. Esto ya es algo que ya se ve mucho mejor que, de lo que era antes. Y de nuevo, ya sabes, esto está dando pequeños pasos y sólo estamos creando entonces ahora. Entonces podrías pensar, ya sabes, esto es tonto, no pude hacer este minuto. Pero digamos que quieres tener un 100 tablones, como ofensivos y se van, Hollywood se queda aquí. Y esto es especialmente útil cuando tienes como una escena que tiene un montón de cercas o simplemente sí, cuando esto se vuelve reutilizable, verás mucho valor. E incluso una vez que te pones bueno en scripting, puedes escribir esto en como un minuto o algo así, simplemente va muy, muy rápido. Estos son los mismos comandos, ¿verdad? Solo puedes sacarlos aquí, parlamento un for-loop y BAM, ahí tienes. Por lo que no toma mucho tiempo, en realidad toma menos tiempo para escribir scripts y para crear bibliotecas en blanco de Andra. Entonces sí, solo para dar algo de perspectiva. Enfriar. Entonces tengo tablones y los pongo de nuevo a diez para enfocar un poco más. Y añadamos una, otra dimensión de la aleatoriedad, ¿verdad? Por lo que todos están perfectamente alineados. Quien haya bajado estos es maestro. Baby Austerlitz, tal vez un randomize se espesa un poco. Yo quiero que tengas esto en su lugar con las variables y sigues esto. Esta estructura es realmente fácil de añadir a esto, ¿verdad? A lo mejor hagamos que esto sea un poco más variable. Sí. Simplemente puedes tomar cada aspecto y simplemente hacerlo un poco más único, un poco más aleatorizado a, para agregar detalle en lugar de solo, quiero decir, el detalle también está en scripting. No solo tienes el modelado de teselas o conferencias o en lo que sea que pueda tener un scripting detallado también. De acuerdo, entonces tenemos altura, grosor, escucha, haré rotación. Como vimos en el video anterior en la documentación, hay un campo para la rotación al crear un cubo. Si miramos aquí, cubo, tenemos esta rotación, esta rotación valora aquí también. Para que puedas ver en nuestro método de agregar cubo, cada ubicación, también hay una rotación. Y se puede ver que estos valores son bastante pequeños. Entonces estoy asumiendo que esto es una irradiancia más que grados. Entonces eso podría ser un, quiero decir, sólo hay que tener eso en cuenta que estos son radio y no grados. Entonces ahora que sabemos que esto existe, oops, vamos realmente copiar esto. Entonces esto es molesto. Rotación. Vamos a sacar esto y vamos a basarnos en el final. Por lo que ahora de nuevo, nuestra rotación está puesta en piedra, que no es dinámica en absoluto, sino con fines de demostración. Y mientras estás creando este programa, esto está bien como solo asegurarte de que funcione y ver lo que parece que no es. Y también se volvió mucho más grueso ya que porque en realidad estás redimensionando globalmente. Entonces 4N tipo global, eso es tal vez ver si esto funciona mejor. Si lo haces local, eso funciona. No obstante, sí lo hace. Por lo que ahora estamos girando un poco. Cada xs, que ahora es lo que queremos hacer, realidad queremos rotar sobre zed, creo, ¿verdad? Sí. Por lo que en realidad quisiéramos mantener estos x e y distintos de cero Solo quiero rotar y decir: Pongamos este. Asegúrate de que eso funcione. Para que veas que todos están ligeramente inclinados, ligeramente angulados, son solo todos iguales. Añadamos aquí una variable de ángulo. Y luego pongámoslo a un uniforme al azar, reinventemos el vino y no es tan malo. Entonces haré 0.1.1, negativo uno, y positivo 0 a uno. Perdón por eso. Yo quería que se amaran el uno al otro. Pero aún así el grosor. Sí, en realidad lo aleatorizamos espesor donde supongo que está bien. Entonces si lo miramos aquí ahora, esto no es una lectura biselada de la misma a través de grueso. Boom. Ahí vamos. Veamos cómo se ve cuando tenemos un poco más. Ahí vamos. Mira eso. Acabas de crear un 100, quiero decir, a federales relativamente grandes. Y sólo un segundo. Y es muy, muy dinámico. Diga Bueno, yo quería estar llevando un poco más en altura. Simplemente puedes teclear. Pero este 3-11. Ahora tienes un poco más de variación en las TIC. Y es muy, muy flexible sólo por la forma en que configuramos esto. 13. Crear una onda de sine introducción: De acuerdo, entonces estamos bastante cómodos con la aleatorización y el procedimialismo. Ahora creo que vamos a pasar de las matemáticas aleatorias a las matemáticas generales. Ahora, no vamos a estar resolviendo porque x están haciendo y ecuaciones o algo por el estilo. Solo vamos a estar usando la biblioteca de funciones matemáticas, como hicimos con la biblioteca aleatoria. Entonces ahora va a ser más complejo o teórico o algo como lo hicimos con lo aleatorio. Esto sólo va a ser aplicando la biblioteca de funciones matemáticas. 14. Crear una onda de sinuca.: Muy bien chicos, preparémonos para nuestro próximo programa. Entonces vamos a pasar una vez más al espacio de trabajo de scripting, deshacernos de todo lo que hay ahí. Crea un nuevo bloque de datos, amplía un poco de control, desplaza real, y lo descubrí por ahora. Es importante destacar que PY y pareja de N3 es solo para prepararnos para nuestro guión. Para este, voy a tenerlo un poco de un enfoque diferente. No sólo vamos a estar empezando con un cubo y luego yendo de ahí, en realidad vamos a recrear o a malla desde cero esta vez. Entonces entrémonos en ello. Para ello, estaremos creando nuestra malla. Está bien, entonces, así que esto podría parecer un poco familiar para cuando cargamos todos nuestros objetos. Utilizamos objetos de punto de datos de puntos BPI con el fin de enumerar todos los objetos, lo que también nos permitió eliminarlos. Y también puedes simplemente crearlos. Al hacer esto, trabajamos para crear un objeto para ser puro y todos los demás objetos sobre nuevos. Llámalo curva de pecado también tal vez. Y esto realmente va a entrar y los dos eslabones se arman a través de nuestro objeto. Entonces una vez que tengamos una malla y un objeto, podemos enlazar profundamente texto completo. Es un bocado. Obj. A lo mejor deberíamos hacer malla en este punto también. Si no me equivoco. Vamos a correr eso. De acuerdo, entonces ahora podemos ver que tenemos nuestro objeto el cual tiene un delantero. Si no hiciera esto, esto objetará cosas. Simplemente crea una malla. A lo mejor carrera. Deshazte del objeto. Seleccionado, elimínelo. Se podía ver que podía correr esto tantas veces como uno. Nunca va a haber un objeto aquí y va a ser un montón de mallas aquí abajo. Entonces esto es un poco confuso. Estas cosas se esconden en el fondo como esta malla cubo. Creemos que es hace mucho tiempo, pero aún se esconde. Entonces, en realidad pasemos por nuestra rutina de eliminación. Entonces hemos, hemos hecho esto un par de veces donde los objetos, así que recuerdo para OBJ y BP justo arriba objetos de datos. Los objetos de datos punto eliminan el tipo de objeto actual. Por lo que cada objeto se enumera y luego se elimina así que en realidad podemos hacer lo mismo para un mallas. Por lo que para malla en el punto BPI las mallas amarillas, punto BPI, dot.me Malla. Por lo que esto realmente se va a deshacer de todas las misiones que actualmente se encuentran en la escena. Y entonces creará uno nuevo. Entonces veamos si eso funciona, correcto, parece que sí. Y así sólo hay una malla aquí, todavía no hay objetos. Entonces, descomentemos de nuevo a estos tipos. Y lo tenemos todo configurado ahora. Muy bien, genial. Nuestras mallas aún un poco aburridas, ¿verdad? No hay una visión real de los datos. Entonces podemos cambiar eso haciendo puré los puntos, anuncio, anuncio de británico. A 100100 vértices a través de la malla. También voy a añadir un par de bordes. Por lo que realmente necesitamos uno menos que la cantidad de sobreapalancamiento es porque un borde es siempre una línea de conexión entre dos vértices. Por lo que siempre habrá un Edge menos y hubo cuatro Dixit. Entonces tal vez deberíamos realmente poner esto ahí dentro y una variable. Entonces digamos un 100 muestras. Entonces quiero tener un 100 vértices y luego menos uno bordes. Muy bien, así que ahora deberíamos haber sabido que todavía hay todos en los mismos lugares donde todavía no hay realmente haciendo nada. Pero primero, vamos quizá un poco más básicamente que la calificación de clics a sinewave. Vamos a crear una simple línea plana, una curva plana. Por lo que vamos a ir sobre cada vértice. Entonces para i en rango de muestras, porque esa es exactamente la misma cantidad de vértices. Por lo que cantidad de muestras. Agarraremos el vértice actual, que estará enredado para cada uno de los índices i. Y luego diremos vértice actual C, o, que es la coordenada. Pondremos eso igual a, digamos 0 en x e y, y luego uno en z o algo así, por lo que no es plano en el suelo. Tipo de recompensa para ejecutar esto. Mira la curva. Está bien, eso no está mal. Todavía no hay geometría real. Por lo que podemos ver los puntos que se habían desplazado, pero los bordes no lo son. Es decir, ahí hay bordes, pero no saben qué esperarte para los adictos es profundo o qué deben hacer. Entonces eso realmente está configurado eso también. Entonces no voy a querer hacer es por cada filo, por cada cuatro garrapatas, quiero hacer esto por cada vértice excepto por el último. Entonces si yo es menos que simple, minús1, quería decir, bordes de malla. El actual que adopto los vértices es igual al vértice actual y luego al siguiente. Y esto es básicamente sólo un fichaje. Por lo que estoy asignando un vértice a vértice es para cada misión siempre, cada filo. Por lo que cada filo es esencialmente más grande de la historia. Este es un vértice, este astérix aquí. Y aquí tienes un vértice. Lo que quiero hacer es nosotros, así que solo conectas estos cuando un borde. Entonces este es el vértice actual, vértices I. Entonces vértice actual como índice de i Y luego el siguiente vértice a este tipo, que es el final de la conexión, es i más uno. El siguiente. O tienes que asegurarte de que nunca pasemos por las muestras menos una. Porque entonces yo más uno sería 101 o 100. Y ese vértice no existe porque va de 0 a 99. Por lo que tenemos que asegurarnos de que nunca superemos ese límite. Porque si dijéramos que dejaras esto fuera, obtendríamos un error. En realidad puede cargar la consola. Por lo que se puede ver que es un lector fuera de rango índice 99. Entonces eso no existe al parecer. Por lo que tenemos que hacer para asegurarnos de que mantenga su todavía en alcance. Todavía podemos siempre tenemos que entrar en relativo a tabulador de doble toque se selecciona con el fin de ver nuestra curva. Entonces eso es un poco molesto. En realidad le agreguemos un modificador, por lo que es una pieza adecuada de geometría. Entonces ahí es donde tomamos la piel es finito. Podemos guionar esto así como la película rápidamente hacer eso. Entonces haremos esto haciendo modificadores de archivo OBJ, ese nuevo tipo es igual a piel y luego nombre. Realmente no importa lo que se llame su pariente fuera para hacer esto, entonces en realidad ya, así que después de crear los objetos, creamos un modificador de tipo skin, que es solo un poco más fácil verlo si apuntas. De acuerdo, así que esto ya se ve bastante guay. Déjame aplicarlo en realidad a un C a vértices porque realmente no me está dejando verlo. Muy bien, genial. Entonces esto son muestras humanas. Si pusiéramos como tomar esa muestra y eso es mucho más corto, tal vez no deberíamos hacer eso. Bueno por ahora, está bien. Vamos a entrar aquí, aplicar el modificador. Ya veo, el yo, ya veo. Por lo que siempre va a ser cambiado por uno. Por lo que pueda leer eso. Y los bosques. Para la onda sinusoidal, deberíamos agregar un par de variables más. Entonces vamos a añadir una frecuencia. Simplemente pondré esto en 30 de longitud porque debería ser más variable. Y luego altura tres tal vez. Y entonces podríamos hacer un paso que sería la longitud dividida por nuestra muestra, que enderezará todo. Eso tiene un poco más de sentido. Verás cómo se ve eso en un segundo. Muy bien, así que para hacer el, para obtener la onda sinusoidal, tenemos que importar matemáticas, lo que nos permite acceder a un montón más de módulos. Entonces si podemos empezar a explorar y la consola un poco, agrandar. Una cosa por la que podrías hacerlo. Tercero, matemáticas. Esto, esta función se deriva, función es solo función estándar de Python. Enumeraré todas las cosas que puedes hacer con el método o clase actualmente seleccionado. Y aquí, para que puedas ver las matemáticas ofrece raíces sine cuadradas. A lo mejor puedo mostrarte con aleatorio para hacerlo un poco más visualmente también. Si yo hiciera lo aleatorio, se podía ver uniforme aleatorio. Entonces esa es la función que usamos antes, derecha, al uniforme aleatorio. Y aquí solo puedes ir a buscar cosas. Entonces digamos que quería hacer algo con pecado o irradiancia o con poder, supongo, un poco buscarlo. Entonces veo bien, así que se llama pecado. Y tal vez me pueda gustar tener métricas en, y entonces va a devolver el seno de x, seno x devolver un seno de x Así que si fuera a hacer seno 90 es 0.9, eso es correcto. Medido en radianes. Bueno, claro que eso no es genial como también lo hace tu método. Porque es uno aquí también. De acuerdo, así que MATLAB resplandor, sí, 90. Eso es 1.5 sitios lo hacen. Sí. Entonces el seno de 90 es en realidad uno que funciona, así que solo tenías que presionarlo y en resplandor. Pero sí, eso es solo un poco más sobre cómo realmente puedes jugar y descubrir estos, estos módulos. Si solo imprimes esto, puedes tipo de pasar por lo que todo ofrece, qué más tiene también puedes, por supuesto, consultar la documentación. Entonces déjame simplemente cajear rápidamente lo que sea que entre aquí. Para que puedas ir a firmar. A lo mejor en un corchete. Sí. Ahí hay un seno de x radianes. Sí, y x radianes, por supuesto, un retorno objetivo está en radianes, pero un signo en radianes. Eso no tiene sentido. me parece además. Entonces ahora sabemos cómo funcionan las matemáticas. Entonces en realidad podemos agarrar nuestro, digamos que nuestro valor es lo que queremos hacer. Sí, vamos en lugar de uno, escucha este método sine de i t lo obtenemos ahora se obtiene onda sinusoidal que tiene muy, muy blocky un muy, muy largo también porque tenemos 500 muestras. Entonces esto va a ser 500 y enlazar porque sí, esto siempre va a ser uno. Entonces sí, definitivamente no queremos eso. Queremos tener algún tipo de paso. Es decir, cada evidencia ya en su lugar. Entonces digamos que mi valor equivale a i veces paso. Y entonces quería hacer, en lugar de esto, quiero hacer valor, lo que lo hará un poco más controlable y un poco más suave porque tenemos estos pasos extra. En lugar de que esto sólo sea uno, serán 30 divididos por 500. Y de esta manera podemos controlar realmente la longitud. Si ponemos esto en 20, será más pequeño, pero en realidad no cambiará la frecuencia que esconderías ni nada. Y en realidad es incluir las TIC. Entonces multiplicemos nuestras coordenadas xy por la altura. Por lo que de esta manera, si haces 33.55, en realidad afectará la altura. Pongamos esto en tres. Eso me gusta un poco. De acuerdo, así que ya lo está buscando. A lo mejor. Te mostraré qué muestras muy rápidamente para tener menos muestras, tienes menos vértices. Entonces es menos resolución. 500 y suave. Eso corre tan rápido como bien. 15. Lee y visualizar los datos reales: introducción: Yo chicos, en esta parte del curso, voy a estar hablando de leer en datos reales de un archivo CSV y mostrarlo como corresponda gráficos 3D gráfico de barras 3D. Vamos a repasar paso a paso, leyendo datos, mostrándolo bien. Y eventualmente, terminaremos con unos gráficos de barras 3D adecuados, como ven aquí. 16. Leña los datos (.csv ): Muy bien chicos. Acabo de borrar todo nuestro oro con el fin de generar este material. Entonces me voy a deshacer de él también. Ese, veamos antes de que se vaya. Y yo sólo empezaré fresco, importante BP como estamos acostumbrados. Eso también es importante. Cv, que es el módulo estándar para Python y licuadora. Acabo de incluir por defecto para que no tengamos que hacer ninguna otra instalación ni nada. Yo sólo vamos a entrar por defecto. Entonces tal vez subamos rápidamente a nuestra consola y ejecutemos esto también donde en realidad todavía está aquí. Ya hice un poco de grabación que tuve que empezar de nuevo para realmente podamos ver cuál era la salida o que son los que entran. Entonces puedes ver algunas otras cosas aquí podrían ser un poco abstractas. Simplemente no voy a ir a ver a los dos cargar la biblioteca CSV. Simplemente lo vamos a estar usando para, para importar nuestros datos. Por lo que lo principal que necesitaremos es una ruta de archivo. Este será el baño real en esto sobre nuestro archivo CSV que queremos leerlo. Entonces abramos a este tipo, no necesito ver en él es en realidad un escabullo de lo que entra Alcott. Pero a medida que entras en los gráficos de barras, y este es el archivo de datos real. Y nosotros los relativistas abrimos esto muy rápido. Para que ustedes puedan echar un vistazo lo que hay dentro. Si no estás familiarizado. Archivos CSV, archivo de valores separados por comas es básicamente solo valores separados por comas. A lo mejor si te mostrara como agregar un archivo de texto o como en un Bloc de notas. Podría ser un poco más claro. Nuevamente, esto son solo las horas de Gama trabajadas y luego solo puedes ver todos los datos aquí abajo. Entonces esencialmente el viernes, las 4z siete horas, eso es lo que dicen los datos. Entonces como una breve visión general de lo que vamos a estar viendo. Entonces para conseguir la ruta de archivo de este tipo, solo puedes hacer click aquí en la parte superior de la Explorer y c cultural, todo eso. Entonces este es el directorio d y luego el nombre del archivo. Simplemente haremos F2 para renombrar Control a para seleccionar todo y Control C. Asegúrate de tener la extensión ahí, ninguna. Por lo que en realidad tienes tutorial dot CSV o lo que sea tu archivo, dot csv. Y esto en realidad es importante porque de lo contrario la licuadora no podrá encontrarla. Entonces esto parece un buen baño. Algo que tenemos que hacer es presionar como arte lo frente. Esto se debe a que tenemos barras invertidas en nuestra cuerda. Todo entre comillas se llama cadena y programación. Y Python es en realidad, en realidad tienes que decirle a Python que no maneje estas barras invertidas porque en realidad puedes hacer como una barra invertida n para una r barra invertida, que es como caracteres especiales, no se van a meter en los de hoy. Solo necesitas asegurarte de que ya sea mejor arte y frente o escapar de cada barra invertida con otra barra invertida. Por lo que ambos de estos murciélagos son válidos. Si solo hicieras las conferencias de Beck, eso no va a funcionar y van a poder resolver su camino. Por lo tanto, ten en cuenta eso. Simplemente usaré el primero porque es quien lee lo mejor. Entonces está bien, ahora tenemos declarada nuestra ruta de archivo. Sólo vamos a tener que leer los datos CSV reales que se almacenan dentro de este archivo. Entonces crearé una variable en la que almacenaré todos los datos. Entonces tal vez llamaré a los datos, tal vez un poco más limpio. Y entonces abriremos nuestro expediente. Entonces esto es un poco de código Python es, no está vinculado a Blender esto, esto es solo código general de Python para abrir un archivo. Entonces con abierto y un camino al archivo, el reclamo y cómo la nueva línea es un punto que dice la lectura de la materia como un archivo CSV. Por lo que dentro de esto, podremos interactuar con nuestro archivo usando la variable de archivo CSV que es mejor aquí. Usar, quiero decir, esto es solo una forma de abrir un archivo y luego tenerlo cerca directamente si te resulta familiar la programación. Si no lo eres, es realmente, realmente no importa. Esto no es un tutorial en el archivo IO ni nada, así que solo toma mi palabra en él. Entonces declararemos nuestro lector CSV y le daremos nuestro archivo CSV como un, como entrada. cual en realidad, sólo voy a mostrar lo que esto, lo que esto devuelve ejecutando esto. Y estoy duplicando nuestra consola porque la impresión realmente imprime en la consola del sistema, como dijimos antes. Y ese capítulo del curso de Peri, esto realmente devuelve un objeto lector CSV, que en realidad no es nada con lo que podamos trabajar, ¿verdad? Obviamente va a tener que rentar sobre los resultados de nuestros lectores. Por lo que un lector es en realidad una lista de filas. Entonces lo que podemos hacer es recorrer todas nuestras reglas dentro del lector y luego poner eso en nuestro diccionario, nuestro diccionario de resultados reales. Y de nuevo, todo esto, lo que estoy explicando ahora es muy pitónico. Oro. Esto no lo es, esto no tiene nada que ver con la licuadora o esto no tiene nada que ver. Eso no es hasta que mezclan decisiones cotidianas, todo tipo de cosas con el fin de extraer datos de un archivo CSV. Puedes buscar esto en línea. Hay un montón de respuestas como desbordamiento de pila. Te voy a dar exactamente esto. Simplemente no voy a pasar demasiado tiempo en esto porque este realmente no es el foco de hoy. Pero sí, veamos qué nos da esto. En realidad. Cambiemos esto de nuevo a los datos porque en realidad usaban los datos aquí. Imprimamos datos y veamos qué nos da esto. Obtendremos un diccionario. Por lo que nuestro primer índice será el trabajo de día y horas. Entonces esta es en realidad la primera fila. Entonces eso tal vez se compara con los insumos a la salida a lo que escribimos. Entonces primero que nada, obtenemos son o variable que es de tipo CSV, y luego podemos recorrer, por lo que podemos iterar sobre todas las filas en nuestros índices que archivamos. Entonces si volviéramos a abrir nuestro archivo CSV, usaré Excel esta vez para que puedas ver muy claramente las filas. Se puede ver por fila. Entonces tal vez imprimiré la longitud de esto. Por lo que la longitud del lector será esencialmente la cantidad de batas que cada uno tiene pero en realidad no esperaba el trabajo. Permítanme mostrar esto rápidamente. Sí, no tiene no es una lista real. Por alguna razón puedes iterar sobre él, pero no es como un tipo de lista. Como vimos antes. Este es el objeto lector CSV. Entonces es un poco diferente, pero puedes pasarlo por encima, que es lo más importante. Para que puedas desplazarte por todas las filas. Utilizo la función enumerar con el fin poder también X como nuestro índice sorta actualmente subió Ed siguiente. Por lo que de esta manera en realidad podemos tener unas claves únicas. Esto es porque si fuera a usar do para lector de fila, y entonces podría imprimir mi regla. Hagámoslo un segundo. Ejecutar eso. Se puede ver estas son todas las filas que están dentro de mi lector. Entonces verás que están reservados el lunes, ¿verdad? Entonces si miramos aquí, podemos poner al lado del otro y elegir un cuatro cuando z3. Entonces estos son, este es el dato y en sus filas. Entonces por cada fila, estoy imprimiendo lo que sea que haya dentro. Pero ahora cuando tengo esto, no hay una clave única que tenga. Porque el problema con los diccionarios es que nunca se puede tener una clave dos veces. Entonces si fuera a decir datos, y pudiera poner la fila 0, que es el primer índice con esta lista, que será lunes o martes o miércoles o lo que sea. Entonces si tuviera que tomar a este tipo y ponerlo igual a uno, que son las horas trabajadas. Por lo que 84, tres. Entonces sólo tendría una entrada para el lunes, una entrada para el martes y así sucesivamente. Debido a que constantemente sobrescribirá la entrada anterior en el interior. Así es como discuto cómo funcionan los diccionarios en Python. Entonces eso es algo de lo que hay que estar al tanto. Tu llave siempre tendrá que ser única. Porque de nuevo, si encuentra, entonces, se ve aquí los lunes ocho con esto es un mal ejemplo. Entonces el martes es uno, pero en realidad es, hay como cuatro horas o seis o como muchas. Solo recuerda la lista, elige a y las filas. Entonces para arreglar eso, tenemos que hacer un seguimiento del índice. Y si quieres hacer esto, esto no es un toroide y error porque no hay suficientes valores para mpeg. O en realidad, realmente no lo dice específicamente. Pero esto es sólo algo que conozco. Entonces tienes que hacer enumera sobre esto, lo siento, obtengo el cheque abrumado real, pero también obtienes el índice y pueden usar nuestro índice tiene una clave. Y entonces realmente podemos crear un diccionario dentro de nuestro diccionario que almacenará nuestros datos. Entonces esta sería la etiqueta y este sería el valor para like, como lo llamé. Eso está bien. Y luego veremos que tenemos una entrada para todos y cada día, cada lunes, martes. No están sobrescritas. De esta manera en realidad podemos extraer todos los datos. Entonces eso ya es un gran trozo de trabajo hecho. Tenemos nuestros datos ordenadamente en un diccionario y está listo para ser trabajado. 17. Leña los datos (.txt ): Oigan chicos, rápidamente voy a repasar todo. También podemos extraer nuestros datos cuando provienen de un archivo de texto. Entonces puedes ver aquí es el CSV, que podría ser un poco demasiado complicado para lo que estamos tratando de lograr. Ahora. Esencialmente los datos son los mismos, incluso la forma en que están escritos, es lo mismo. Acabo de cambiar la extensión para leer dot TXT. Entonces si los pusiéramos uno al lado del otro, veríamos que es esencialmente lo mismo. Pero este es un archivo TXT de punto lo que hace que sea un poco más fácil trabajar con y con el que interactuar. Entonces abrimos Blender. Esta es sólo una escena vacía. Vayamos a nuestra batalla de Scripting. Archivo Nuevo Mayor. Y luego las importaciones serían ICM, igual que estamos acostumbrados. Guardar escena, así. Está bien, y ya estamos listos. De acuerdo, entonces lo primero que vamos a tener que hacer es localizar o archivar porque queremos importarlo en licuadora. Tienes que saber dónde está. Simplemente voy a dar click rápidamente aquí. Esta es la misma equidad con el CSV, pero si no has visto ese video, solo volveré a repasar esto. Entonces vamos a tener que copiar el directorio. Así que da click en la parte superior del Explorador y la gente ve eso. Entra aquí y vamos a configurar una variable llamada ruta de archivo y luego copiar eso. Y así, hasta ahora, tan bueno. Volvamos aquí, agarra nuestro nombre de archivo real, asegúrate de tener las extensiones o no es TXT. Necesitas todo el todo. Teníamos todo el texto aquí. Y sólo puedo añadir otra contralga. Y en base a un nombre de archivo, una cosa menos que tenemos que hacer para que esta sea una ruta válida en Python es una barra justo antes de la cadena. Hay algunas conferencias OPEX de manejo que Python hace por defecto y no queremos que lo haga en este momento. Por lo que podemos simplemente decirle que no al traer estos están al frente. Entonces esto es realmente importante. No se puede olvidar esto. De acuerdo, entonces esencialmente lo que hemos hecho ahora es que hemos agarrado el archivo AAC, pero aún no hemos hecho nada con él. Entonces vamos a abrirla. Y ni siquiera hice así. Por lo que con la ruta de archivo abierto, queremos leer el archivo. Entonces pongamos r aquí, que es el modo de visualización. Y entonces diremos como archivo TXT. Por lo que en realidad ya estaba hecho, ahora abrió nuestro expediente. Y ustedes piensan, ¿por qué no lo hizo esto dentro de esta declaración, por lo que en este nivel de sangría estará accediendo al archivo. Entonces cada vez que estamos dentro de aquí son seguidos POR abiertos, pero siempre que estemos de vuelta aquí afuera, el archivo estará cerca. Entonces esto es realmente bonito. Esto se hace automáticamente con esta sintaxis de ancho abierto. El licuador ofrece que Bitcoin ofrece mejor. De acuerdo, entonces estamos en nuestro archivo en este punto porque mi cursor es una sangría más desde el inicio o desde este ancho. En el expediente. Y vamos a imprimirlo por ahora. Entonces imprimamos archivo path dot, leamos líneas. Solo leamos todas las líneas y solo veamos qué nos da eso y solo pinchamos en Ejecutar. Me va a dar un error. Entonces vamos a comprobar eso abriendo nuestra consola del sistema. Es así como realmente podemos ver lo que escribe en cuanto a decir. Por lo que no tiene ningún relé de atributos. De acuerdo, entonces esto es porque cada vez que estamos dentro de nuestro archivo de texto, tenemos que usar nuestro archivo DEX donde no podemos usar nuestras camas de archivos porque nuestro sentido mal es solo la ubicación del archivo, archivo de texto. Ese es el que declaramos aquí es en realidad el contenido del expediente. Entonces lo que sea que se abra, tienes que ser referido como archivo txt en este ejemplo. Entonces eso no es lo que quería hacer. Esto ejecutar eso, eso funcionó. Volvamos a nuestra consola del sistema porque todavía está imprimiendo también tiene que ser salida a los servidores de la consola del sistema van a tener que mirar aquí. Y podemos ver que ahora tenemos todas nuestras líneas aquí dentro. Entonces esta es una lista esencialmente. Por lo que se trata de una colección de líneas. Vuelve la función Readlines como una colección de líneas. Y eso lo podemos ver aquí. Ahí está esta barra invertida n, que es uno de los, el personaje de barra invertida del que hablaba aquí. La barra invertida n está esencialmente diciéndole a su, su archivo esto es un enter, por lo que este es un nuevo carácter de línea. Y realmente no queremos esto en nuestros, en nuestros datos, para que podamos deshacernos de eso. Entonces, en realidad creemos un diccionario como lo hicimos antes. Entonces esto será, tus datos, serán un diccionario vacío como así. Entonces así es como se puede declarar un diccionario vacío. Entonces es esencialmente lo mismo que decir esto. Pero yo sólo estaba escribiendo trabajos por ahora. Lo siento, mi alarma. De acuerdo, entonces tenemos un diccionario vacío. Ahora pasemos por todas nuestras líneas. Por lo que tenemos X cantidad de líneas. Nunca sabemos cuántas lentes o tenemos esta colección de líneas? Entonces al igual que hicimos con los objetos, solo podemos iterar sobre todas y cada una de las líneas ahí que podamos encontrar. Por lo que cuatro líneas de archivo TXT punto de lectura líneas. Por lo que esta será nuestra colección de líneas sobre cada línea. Una cosa que tenemos que hacer, así que déjame solo imprimir línea. Para fines ilustrativos. Podemos ver que tenemos estas, todas estas líneas. Y ahora note que este carácter n de la contralga invertida ya no está aquí. Pero en cambio tenemos este enter. Tenemos esta línea en el medio, que es esencialmente fuera es barra invertida. N personaje se interpreta en mezcla en Python, que no es lo que queremos, claro. Entonces una cosa que podríamos hacer es grabar nuestra tira este personaje hacia fuera. Entonces, ¿por qué están desnudando? Esencialmente podemos despojar cualquier cosa de la derecha de nuestra cadena actual. Por lo que mi línea sería igual a. Nos vemos el próximo lunes, destino. Y yo soy la contralga n diciendo nuestra tira, en realidad podemos empezar desde la derecha y se puede quitar esta contralga n Así que lo que pongamos aquí va a ser despojado. Por lo que realmente vamos a conseguir esto en su lugar. Entonces si tuviéramos que imprimir eso a la consola, ejecute nuestro guión. Se puede ver ahora que el entra nuestro, nuestro conseguido desaparecer. Entonces esta es esencialmente la línea que queremos almacenar en nuestro diccionario de datos. Entonces redefinamos nuestra línea. Establezca igual a la línea sin esta entrada al final. Y entonces realmente podemos usar esto en nuestro diccionario. Todavía hay una cosa más que tenemos que hacer. Entonces para ver como comenzó la reutilización, cada columna ya estaba dividida por cadena, por el, por la función. Pero ahora en realidad vamos a tener que hacerlo nosotros mismos. Entonces podemos ver esta línea, por ejemplo, dice el domingo coma cinco. Pero en realidad necesitamos dividir esto. Entonces nuestro día es domingo y nuestras horas trabajadas son, son cinco. Pero a partir de ahora, esto es sólo una entidad, esta es una cadena. Entonces tenemos que dividir eso. Entonces con el fin de dividir la cadena, podemos usar la función split. Y en realidad no es tan difícil. Es, eso es algo lindo de Python. Todo es muy legible y no es tan abstracto. Para que pudiéramos decir nuestro día. Esta línea de punto se divide y uno se divide en la coma. Por lo que esto esencialmente devolverá una lista de nuestra, de nuestra cadena que le damos a una línea como cadena. Queremos dividir este coma vencido. Entonces vamos a tomar lo que sea antes de la coma, lo que sea después de la coma. Y esa va a ser básicamente nuestra lista. Déjame mostrarte. Sólo voy a imprimir día ahora mismo. Este no va a ser el día real. Esta sólo va a ser la lista que se dividió sobre la coma. Perdón, este no es mi correcto todavía, así que vamos a correr eso. Y ahora veremos que tenemos nuestro día y nuestras horas trabajadas por separado. Por lo que ahora se trata de una lista con 22 ítems y así uno para cada columna. Ya que nuestras columnas se dividen con esta coma. Entonces nuestro día es en realidad el primero. Entonces podemos decir y siguiente es 0 porque siempre tenemos que empezar con el índice 0. Y nuestras horas trabajadas serían índice uno. Entonces eso será en todo después del colon es todo antes. Y esto es todo después. Bueno, claro, si hubiera múltiples comas, habría más de dos índices en esta lista porque así es como funciona la difusión. Se dividirá antes de cada croma. Pero como sólo hay uno, sólo tendrá lo que sea antes y lo que sea después. Entonces eso es exactamente lo que queremos. Entonces, ¿qué si pudiéramos saber, por ejemplo, que imprimieran horas trabajadas y veremos que esto es exactamente lo que queremos. Entonces ahora mismo todavía hay, todavía no queremos esto para cada línea aquí. Esto es solo un encabezado o etiquetado o como quieras llamarlo. Entonces una cosa que voy a hacer, voy a usar de nuevo la función enumerar. Entonces esta es una bonita forma de bytes y permitiéndonos conseguir una bodega de nuestra actual y siguiente. Entonces mientras estamos dando vueltas sobre todas nuestras líneas. Y la forma en que teníamos antes. Por lo que para línea en archivo, longitud de lectura, sólo lectura, agarra nuestro objeto forrado. Tres solo agarran el objeto de cadena real que está en la lista que no sabemos cuál es el índice actual o la iteración actual, simplemente obtenemos el objeto. Pero al usar la función enumerar, agarramos nuestro índice, por lo que nuestra iteración actual y en línea también. Entonces esto es en realidad mucho más pitónico que podríamos hacer también para índice en rango y luego la longitud o como la cantidad de líneas que tenemos y luego estamos mintiendo sería el archivo de texto se lee líneas en una. y el variable también, un acre justo gravedad puede explotar esto podría ya ponerse un poco confuso. Entonces, sólo volvamos a esta forma de leerlo. Por lo que ahora usa esencialmente mediante el uso de esta función enumerar y nuestra colección, esencialmente hemos desbloqueado este índice consultable en nuestro bucle for. Por lo que ahora podemos acceder a esto también. Entonces como lo hicimos antes, tomaremos nuestro diccionario de datos o clave tiene que ser única, así que pondremos el índice aquí, y luego almacenaremos nuestros datos aquí dentro. Entonces llamo a esto etiquetado como en realidad, como lo llamamos un día por ahora, pero es un poco más autoexplicativo. Y la nuestra trabajada es horas trabajadas. Y si fuéramos a imprimir datos aquí abajo, veríamos que tenemos, bueno, todavía tenemos esta primera línea. Vamos a deshacernos de eso ahora ya que estamos usando el índice de giro, podemos filtrar. Entonces podemos decir si mi índice es mayor a 0. Entonces para la primera línea, nuestro índice será 0 porque esta será la primera iteración y siempre empezamos en 0. Entonces esto será una mirada aquí. Y 0 será esta línea. Entonces no queremos serlo, básicamente vamos a ignorar esta línea. Entonces siempre que lo sea, mi índice es más de 0. Entonces siempre que estemos aquí o aquí, o donde sea, vamos a hacer realmente lo que queríamos. Pero antes de eso, sáltalo. Esencialmente. Por eso ponemos esta afirmación if, este filtrado todo el camino en la parte superior. Porque ni siquiera quieres desnudarte. Ni siquiera queremos molestarnos si es la primera línea, sólo tienes que seguir este continuum. No importa. Si imprimes esto en nuestra consola. Veremos que empieza a la una. Y luego nos limitamos a conseguir todos nuestros días y más de horas trabajadas. De acuerdo, entonces tal vez déjame simplemente mostrarte rápidamente cómo se vería eso si no usáramos nuestro índice aquí, porque esto es un escollo o diccionario del que tienes que ser River. Entonces digamos que solo pusimos nuestro día aquí y luego pondríamos eso igual a sin embargo siempre que trabajábamos. Simplemente se ve un poco lista de array bastante podría funcionar. Entonces, ejecutemos eso. Y ahora como ven, aquí sólo tenemos siete entradas. Solo tenemos una entrada por día. Y eso se debe a que una clave de diccionario nunca puede ser, puede estar ahí dos veces. Siempre se limitará a sobrescribir la clave del diccionario anterior. Entonces digamos que teníamos el lunes, así que pusimos ocho. Ok, eso está todo muy bien. Pero luego volveremos a tener el lunes y luego lo anulará con uno. Entonces si ustedes, si miran de cerca, verán que esta línea es esencialmente sólo una semana pasada que el pecador no escucha. Entonces de domingo a sábado seis, así que sólo como que se remonta y sobrescribe lo que tengamos dentro. Entonces eso no es bueno. Entonces si tienes datos que están duplicados aquí, quiero decir, si la etiqueta está duplicada o, o si alguna columna está duplicada no puedes usar, no puedes usar esa columna como clave o diccionario porque perderás datos. Lo harás, sólo te quedarás el último, menos entradas. Entonces eso no es lo que queremos. Entonces usaremos nuestro índice, que va a ser único porque es solo la iteración actual de la línea. Entonces este es básicamente el número de línea. Entonces uso esto en su lugar. Y eso solo creará un diccionario dentro y almacenará nuestros datos aquí. Entonces en realidad no perdemos nada. Ejecutará eso. A pesar de que tenemos todos nuestros datos prolijamente y el mismo formato que teníamos cuando solíamos ver como biblioteca V. 18. Crear el gráfico de barras: De acuerdo, así que ahora que tenemos nuestros datos, déjame realmente renombrar rápidamente esto de nuevo a la misma forma que ustedes chicos en el csv side habit sort. Es realmente etiqueta y valor. Si no has revisado el video, lo hice. Hice un poco más explicando sobre cómo te gustaría abrir archivos y y la ruta del archivo y cosas funciona. Entonces si sabes que eso todavía no está claro para ti, quizá puedas ir a revisar ese video también. Algo más info para enumeración también. Por lo que no es malo revisar. Pero una vez que estás aquí y tus datos están impresos, en realidad estás listo para ir al siguiente paso, que en realidad es visualizar los datos, porque por eso estamos aquí, ¿verdad? ¿ Quieres crear nuestro gráfico de barras 3D? No, se licuadora. Entonces eso es lo que tenemos que estar haciendo ahora mismo. A lo mejor primero, vamos a escribir nuestra pequeña porción de limpieza que hemos estado haciendo para el último par de guiones también porque no queremos entrar y quitar toda la geometría o seré objetos cada vez porque tienen que estar creando cubos y cosas a partir de ahora cada iteración, cada vez que ejecutamos el script y no queremos ir siempre al punto de vista y eliminamos todo. Por lo que debes recordar que ya es. Entonces, para cada objeto en los objetos de punto de datos BPI, por lo que todos los objetos son una colección de objetos. Y vamos a repasar a todos individualmente. Y entonces vamos a cada objeto individualmente. Entonces ejecutamos esto, todo se ha ido. Puede que las mallas aún estén aquí. Entonces esto es lo que vimos antes en nuestro y nuestro curso de señas o curso de matemáticas. A lo mejor no lo escribiré aquí. Entonces si quieres deshacerte de él, este es un buen ejercicio para ustedes lo intentaron, trataron de recordar cómo hacerlo. Es muy similar a lo que hemos escrito aquí. Ten en cuenta que no queremos que mueva objetos, pero queremos quitar mallas. Y eso debería ser una buena pista para los chicos que quieren probar esto en casa. Entonces no voy a entrar en ello en este momento. Entonces, en realidad quizá un poco. Entonces digamos que el tipo de datos está aquí. Aquí ocurre la limpieza. Y ahora todos hacemos y visualizamos datos. Muy bien, genial. Entonces, esencialmente lo que queremos hacer es por cada índice, por cada fila, o cada bit de datos que tenemos, queremos crear una barra. Entonces lo que vamos a querer hacer es repasar todas nuestras entradas de datos. Podríamos hacer es hacer para la entrada de datos y datos. Imprimamos eso. Imprimamos la entrada de datos. A ver qué obtenemos. Conseguimos paso a paso. Obtienes todos nuestros índices, que ahora es esencialmente lo que queremos. Pero podríamos usar esto con el fin de agarrar nuestros datos a través de mí en un HLOOKUP, nuestra entrada de datos actual en nuestro diccionario de datos. Entonces si corriéramos eso, veríamos lo que queremos ver. Por lo que estos serían nuestros datos. Déjame abrir un archivo de texto para que sea más rápido. Por lo que verías líneas. Pero luego en Blender y bisonte. Entonces, hasta ahora tan bueno. Y vamos a patear, lo siento. De acuerdo, en caso de que tengamos así nuestros datos, estamos dando un bucle sobre su historia o revisando cada entrada de datos de forma individual. Y esencialmente lo que queremos hacer ahora es que queremos crear un dinero. Entonces para hacerlo solo crearemos un cubo rápidamente para asegurarnos de que sabemos cómo funciona esto de nuevo, porque seguimos olvidando. Este es un simple taco. Ahora bien, la cosa es que quiero redimensionar esto con el fin de hacerlo, para hacer de la altura b el valor actual o el actual, la cantidad de horas que hemos trabajado. Entonces para hacerlo Alex, pero para bajar a uno, porque voy a terminar redimensionando esto. Y quiero simplemente multiplicarlo por uno para que sea un poco mejor. Por lo que no lo tienes el doble de tiempo que se debe resolver antes de que puedan deshacerse de esto entrar en modo Editar. Y la ubicación va a tener que cambiar también. Por lo que no sólo queremos que todas estas barras se superpongan entre sí. Entonces, sólo pongámoslos en la dirección y. Por lo que dice que estamos usando un tamaño de uno. Nuestro ancho o el cubo será uno en todo momento y son índice u hora. La iteración también se incrementará con uno. Entonces volvamos a usar la función enumerar, que es una que uso todo el tiempo. Entonces para, para repetir una vez más, el enumerado. Usando enumerates antes de que nuestra colección se desbloquea, nuestro índice, desbloquea nuestra iteración actual. Entonces por qué acabamos, para la entrada de datos o para el artículo en datos, solo excederemos o artículos que puedes imprimir. Artículo que está bien. Pero no hay forma de hacer un seguimiento de qué ferrocarril de iteración o cuántas veces ya ejecutamos este bucle. Podríamos, por supuesto, establecer una variable i igual a 0 y solo yo igual, igual a una cada vez en nuestro bucle. Pero esto es muy no pitónico. Por lo que Python ofrece esta funcionalidad por defecto, simplemente poniendo enumerate aquí. Por lo tanto, desbloqueando nuestro idx, nuestro índice, y asegúrate de tener esta configuración de pedido correctamente para que sea índice primero y luego artículo real. Entonces eso es importante tener en cuenta. Entonces tenemos nuestro índice ahora. Por lo que bien podrías simplemente poner eso como nuestra coordenada y. Por lo que en la primera iteración, nuestro índice será 0. Por lo que nuestro y índice r, y coordenada será uno, será 0. Lo siento, déjame ilustrar en realidad. Por lo que nuestra coordenada y hasta v 0. Y nuestro próximo cubo, o siguiente iteración o IV, x será uno y nuestras coordenadas y serán una. Y esto sólo sigue y sigue. Entonces tenemos 2345 y así sucesivamente. Entonces de esta manera podemos realmente fácilmente simplemente alinear o cubos. Ya que sabemos que la longitud siempre va a ser una. Y esto siempre va a incrementarse con uno. Entonces esto funciona bien. De acuerdo, ahora, ya parece un gráfico de barras, pero no es realmente interesante, todo es igual. Entonces vamos a tener que escalar estos. Entonces hagámoslo manualmente de nuevo para asegurarnos de que sabemos cómo hacerlo. Y empecé a robar el mando aquí abajo. Entonces podemos simplemente redimensionarlo, el valor, lo que sea. Entonces esto en realidad no debería ser diez, ¿verdad? Debe ser nuestro valor real. Es absolutamente amor. Esto debe ser un dos o seis. Por lo que para obtener este valor, necesitaremos buscar nuestra entrada de datos actual y diccionario de datos. Y entonces todavía no vamos a tener en realidad, déjame realmente mostrarte lo que tenemos si hacemos esto. Entonces ahora tenemos sólo los cubos de riesgo, pero este es nuestro valor. Y no sólo queremos que esto sea correcto. Queremos buscar nuestro valor dentro de nuestra entrada de datos. Entonces en realidad tenemos que buscar dos veces porque aquí tenemos un diccionario dentro de un diccionario. Entonces vamos a tener que buscarlo de nuevo. Entonces mediante el uso de estos corchetes y luego queremos escribir valores. Y esta es la clave que utilizamos con el fin de almacenar nuestros datos, nuestras horas trabajadas. Entonces si usamos esto, veremos que nuestro valor es en realidad nuestro valor. Entonces ahora que lo tenemos, podemos colocarlo en lugar de R, luego se vuelve dinámico, pero en realidad deja de funcionar. Entonces vamos a echar un vistazo a esto. Elemento de secuencia esperado de tipo float, no string. Ok, entonces imprimimos esto. Esto parece números. De acuerdo, esto parece para pero esencialmente para lo que los archivos DEX o CSV también hacen es adivinar cualquier valor que encuentre dos cadenas. Entonces, en lugar de almacenar hacia adelante, en realidad almacenará una representación de cadena o para lo mismo con cualquier otro tipo de datos. Entonces digamos que tienes una lista de números. Entonces eso es 123. En realidad solo envolverá esto entre comillas y lo convertirá en una cuerda. Por lo que en realidad no lo tendrás. No podrás usarlo como lista. Habrías adivinado de nuevo a una lista primero. Entonces eso es algo a tener en cuenta. Pero sabemos que esto siempre va a ser un flotador porque sí tenemos algún control sobre nuestros datos. Por lo que podemos simplemente lanzarlo explícitamente a un flotador. Por lo que esto lo hará, durante tu número en un flotador. Ahora hay que estar al tanto. Entonces esencialmente lo que tenemos ahora, así que el valor es una cadena que es cuatro. Entonces si fueras a imprimir valor o tal vez simplemente imprimirlo así, se vería. Al igual que es un valor a un flotador. Pero si nosotros, digamos que hacemos valor más tres, esto no funcionaría como ves, entonces se puede concatenar cadena a cadena. Entonces nuestro valor es una cadena. Todavía. Íbamos a hacer esto más explícitamente n-type, obtener el tipo de nuestro valor. Esto sería un flotador. Entonces para cambiar eso, podemos decir que el valor es igual a la representación flotante del valor R. Veríamos que nuestro valor es de tipo float. Y si ahora estuviéramos al 3-2, sí, esto funcionaría. Pero hay una cosa de la que hay que estar al tanto. Entonces digamos que mi valor es string, una cadena real. Entonces si se trata de una cadena de cuatro o de una cadena de pruebas, esto es lo mismo si yo escribiera, para buscar el tipo. Entonces cadena B, digamos que mi valor es igual a escritorios. Ese valor es, sigue siendo una cuerda, no sabe qué, qué hay dentro. Ahora sabemos que cuatro es un, es un flotador, por lo que podemos adivinarlo a un flotador. Pero digamos que nuestro valor equivale al destino o intentarlo, intenta adivinar esto a un flotador. Esto no va a funcionar. No se pudo convertir string a float test porque esto no es un, esto no es un número, no va a funcionar. Entonces lo que hacemos aquí, como adivinamos para flotar, pero digamos que nuestro valor en realidad no es, no se puede convertir a flotar. Esto es, esto va a estrellar nuestro programa. Entonces esto es algo de lo que tienes que ser cauteloso. Ahora sabemos que todo esto va a ser números o esto está bien. Pero sólo ten eso en cuenta. Que no deberías simplemente lanzar temerariamente todo para flotar porque esto podría no funcionar siempre. Pero en nuestro ejemplo esto siempre va a funcionar. Entonces hagámoslo y vemos que nuestras barras son del tamaño correcto. Ahora una cosa más a tener en cuenta es que este tipo de parece una onda de sonido o algo que no es realmente lo que queremos. Queremos que todos sean planos en el piso. Entonces vas a tener que moverlos hacia arriba individualmente. Y como puedes ver, la escala desde el centro. Por lo que la mitad de la, la mitad va a estar por debajo de 0.5 de ella va a estar por encima de 0. Entonces básicamente lo que tenemos que hacer es sólo que tenemos que moverlo hacia arriba la mitad de la altura. Por lo que este valor es una altura, cambios a las TIC. Por lo que esta sería la altura y entonces esta sería la altura dividida por dos. Entonces si fueras a ejecutar esto, podemos ver que todo está alineado correctamente. No tenemos como uno consultas que quieras, déjame tal vez ella en esto, en los datos, cambié esto a 19. Eso son los maestros retroceden. Por lo que se ve un poco mejor. Y ahí tienes. Ahora tengo un gráfico de barras que hay un gráfico de barras 3D real, no como los impostores de palabras de alguien tratando de lograr. lo que puedes construir encima de esto, por supuesto, también podrías usar esta lectura de datos de un archivo de texto y crear un paisaje urbano o algo de fondo para conseguir, solo conseguir algunos números y luego conseguir algunos edificios. Pero por ahora esto es solo un gráfico de barras. No dice tanto. Tal vez podamos agregar algo de etiquetado o algunas otras cosas que hacen los niños manera que configuramos esto en nuestro diccionario. En realidad sabemos cuál es nuestra etiqueta, ¿verdad? Por lo que bien podríamos usar esto, imprimir esto, o en realidad almacenar esto. Entonces esto funciona. Por lo que quizá podríamos tenerlo como tendido en el piso aquí. Entonces tal vez intente eso. 19. Agrega etiquetas: De acuerdo, así que ahora que tenemos acceso a nuestra etiqueta aquí dentro, así que tal vez déjame imprimir rápidamente esto y asegurarme de que esto es exactamente lo que queríamos ser. Entonces esto son sólo unos días. En realidad pongamos esto en nuestro 3D también. Entonces no sólo queremos tener que mirar en nuestra consola, ¿ verdad? Entonces eso es lo que es. Cualquier 3D. A lo mejor deberíamos crear algún texto para ello. Creo que esa es la mejor manera de representar esto. Entonces no me hace hacer esto manualmente primero para asegurarme de cómo funcionaría esto. ¿ De acuerdo? Entonces, ¿qué hicimos? Nosotros lo agregamos. Eliminamos, y luego volvimos. De acuerdo, entonces eso significa utilizar los datos. En realidad, solo pondré esto aquí también. Entonces esto es para el bar. Y luego etiquetaremos el bar aquí abajo. Al igual que nuestra etiqueta es esta. Se desea agregar algo de texto. Entonces lo mismo, esto parece parecido, ¿verdad? Entonces en lugar de cubo primitivo en esto serán mazos agregar, entrar, Editar modo es igual a falso. Creo que sí queremos que esto suceda. Nuestra ubicación puede ser la misma que la como cubo r. No podemos compensar esto y los huevos. Entonces eso está compensado por 1.2 debería ser uno estático porque sabemos que en realidad no lo son. Entonces sabemos que ésta es una, por lo que esta talla es una. Y podemos ver las líneas que ya en el centro. Por lo que no tenemos que hacerlo por 1.2. Podemos hacerlo por 0.6. Por lo que esta distancia de aquí a aquí será de 0.05. y sólo lo quisiéramos un poco más allá. Entonces hagámoslo. A lo mejor ya veamos cómo se ve eso. Entonces deberíamos tener un montón de texto aquí. Y deberíamos empujarlo un poco hacia atrás en el, en el y Porque veo ya lo alinea también. Aún así ya lo alinea así. Pero nuestra Q en realidad iba en ambos sentidos. Si hiciéramos esto debería verse un poco mejor. Seguimos entrando en modo de edición, lo cual es normal porque eso es lo que le decimos que haga. Entonces vamos ahora en realidad ya editado. Entonces primero vamos a tener que deshacernos del texto que hay. Entonces solo haremos esto. Ahora una cosa que tenemos que hacer aquí es en lugar de previa o selección, o va a tener que cambiar esto a palabra anterior. Porque nosotros, también podríamos hacer esto cinco veces como lo hicimos aquí es retroceso presionado cinco veces B. De esta manera, en realidad sólo vamos a quitar todo el mundo, quita toda la palabra porque un poco más fácil. Y entonces insertemos en realidad nuestros textos que queremos. Por lo que texto insertar texto recuerda temprano. Entonces queremos que lo siento, hombre, Open. Golpear todo el tiempo tiene realmente molesto. Y vamos a tratar de no hacerlo más. Pero así básicamente estamos configurando nuestra etiqueta y el texto y luego solo queremos salir del modo de edición. Entonces déjame copiar esto. Oh, lo siento, estamos listos para el próximo. Entonces lo que hacemos ahora es buscar nuestra etiqueta. Aquí creamos un poco de texto. Nos deshacemos del, el texto de muestra. Entonces esto es un apilamiento. No queremos eso. Introducemos nuestro texto de etiqueta que queremos. Entonces nuestro día Y me limitaré a volver al modo dos LLC. Entonces si ejecutamos esto, podemos ver que tenemos nuestro día. Se ve bien. A lo mejor una cosa podríamos hacer, porque esto apenas ahora es plano. Ahí hay un extrovertido, tal vez es como un bisel o algo así. Objeto tan complejo que va a ser datos de punto objeto actual. Pero poseer el 0.01. A ver cómo se ve eso. Y ahora tenemos algo de espesor por lo menos. Entonces si comparamos, si no hacemos esto, es plano, hazlo. Tenemos algo de Robin es bastante delgada. Escalarlo en Z. Tan seco que tal vez ya lo esté, pero creo que está bien porque se ve mucho mejor con el sombreado porque el aire es como la geometría real porque esto es justo, Bueno, esto ya es con el bisel, pero es como bastante plano. Con esto, tenemos un poco más de tridimensionalidad. Yo diría, bueno, todo esto es sólo preferencia personal, ¿verdad? Lo escalaré por dos, solo hazlo dos veces más grueso de lo que debería ser como antes. Entonces podemos tenerlo así. Exagerar para mostrarte, ella es básicamente el grosor. Ok. Pondré esto en la variable también para que sea bonito para que no tengamos todos estos números mágicos. En realidad soy un par de ellos. Por lo que nuestro grosor estableció eso para que este tipo aquí nivele eso sería 0.01. También tenemos texto el cual será 0.6. Entonces básicamente estoy traduciendo todos estos valores, variables. Entonces cuando leemos esto, no son solo números mágicos y podemos tener esta ubicación centralizada de donde ajustamos estos valores. Entonces ya no hay más. Es decir, esto fue 0.05. es porque tenemos uno aquí. O sea, puede dejar eso dentro. Entonces tomo ahora vamos a conseguir, generalmente solo quieres evitar tener números en tu, en estas bonitas funciones. Simplemente quieres tenerla sea x porque entonces siempre hay que ir a buscar dónde están estos valores en IA, este es nuestro y establecer el grosor. Por lo que tengo que mirar aquí el valor zed. Ahora solo puedes llamarlo x grosor. Boom, para cambiarlo ahí mismo. Es mucho más conveniente. De acuerdo, entonces ahora tenemos un etiquetado repentino pasando. Esto ya se ve bastante bonito. A lo mejor podemos tener algún etiquetado en el, en el eje zed también. 21. Etiquetar las ticks: De acuerdo, así que tenemos nuestro silicio grueso, vale, el replacer como que le da algo más de significado a los datos, pero en realidad no tanto. Esto es sólo una especie de cosa visual. Por lo que ahora en realidad sumaremos nuestra información adicional aquí también. Entonces vamos a poner el número o las garrapatas están al lado, a tomar por lo que dicen un poco más y luego usar donde el. Entonces para esto simplemente vamos a hacer lo mismo que hicimos con nuestro etiquetado aquí abajo. Entonces solo vamos a poner un poco de texto por una línea que sea apropiadamente, asegurarnos de que esa posición sea la correcta. Sí, entonces cómo vamos a estar haciendo es simplemente copiar esto y luego simplemente cambiar tan valores. Entonces tal vez la ubicación que pueden perder y el tamaño en realidad está bien. Entonces no voy a meterme con todo esto de aquí. El impuesto real va a ser diferente en otro lugar, por supuesto. Entonces, para empezar, en realidad puedo copiar la ubicación de nuestra polla. Acabo de poner eso aquí. Y luego el texto me limitaré a hacer 0 por ahora justo como un maniquí para ver cómo funciona esto. Y ya podemos ver nuestros textos como colocados más o menos en el lugar correcto. Bueno, al menos revuelve coincide con un grueso, pero realmente no está alineado correctamente. Entonces vamos a tener que empujar eso un poco. En nuestra ubicación zed valor, o valor actual va a tener que ser un poco más grande. Aquí vamos a tener que a través del espesor grueso dividido por dos para ponerlo en la parte superior. Y entonces nuestro número real también tiene grosor o vas a tener que añadir eso también. Por lo que este será nuestro bisel que tiempos r espesor. Entonces hagámoslo también. Y así quieres ser una bastante grande, así que eso tal vez es crear una variable para ello. Entonces número, no estoy seguro de que esta sea una forma correcta. Número porque no deberían buscar establecer x es, solo llamémoslo así por ahora. Por lo que también habremos establecido aquí. Sólo para que funcione. Hará todos nuestros cálculos aquí. Por lo que tomaremos el valor actual, que es el medio de este bloque, sumará el espesor grueso. Por lo que la mitad de esto se toma se piensa a ella. Y entonces también vamos a sumar nuestra batalla que si puedo encontrar ese nivel de profundidad tiempos textos espesor como K aquí. Y esto es un bocado sólo para asegurarse de que esté alineado. Entonces déjame mostrarte. Y yo estaba perfectamente encima del Ártico Por cada, cada garrapata. Entonces eso funciona bien. Ahora una cosa más que tenemos que hacer es que lo rotemos. Entonces esto será alrededor de z y luego alrededor de y. así que si fuera a hacer nuestro set 90 o 90 o tirarlo hacia arriba, podría simplemente copiar a estos tipos aquí abajo. Entonces, después de que hayas hecho esto, realmente no importa dónde pongamos esto. Entonces queremos hacerlo alrededor, hace eso, y luego alrededor de la y. así que para ejecutar, todos van a ser. De pie donde deben estar tazón. Por lo que ya tenemos algún número en garrapatas. Entonces eso no está mal. Ahora sólo tenemos que asegurarnos de que es para corregir uno. Entonces básicamente lo que queremos hacer es sólo queremos poner el, lo que sea que esté en posición es como un, como valor aquí. Por lo que sólo tomaremos valor actual y pondremos eso aquí. Ahora esto no va a funcionar porque nuestro valor actual, eso va a ser un flotador. Dice que en realidad llegó a ser un número, pero necesitamos un tipo de cadena. Entonces en lugar de decir, sólo iré aquí y la consola se apresurará a ilustrar. En lugar de decir mi texto es igual a 40, que es que quieres ser un flotador o un entero en este punto. Pero esto no es un directo porque necesitamos explícitamente una cadena. Por lo que puedes ver aquí esperaba esta cadena. Entonces si miramos, nuestro tipo no es cadena, por lo que está mal. Y si fuéramos a hacer esto y luego escribir, obtener el tipo, veríamos que es una cadena, por lo que todo lo que está entre comillas siempre va a ser de tipo string. Eso es importante tener en cuenta. Entonces, bueno, no podemos simplemente agarrar cotizaciones alrededor de esto porque su valor actual en realidad hace referencia al valor. Si hicieras esto, sólo veríamos la palabra valor actual aquí porque no queremos hacer eso, ¿verdad? Por lo que quieres realmente adivinar el valor que está dentro del valor actual variable. Queremos mostrar eso como sigue. Entonces una forma de hacer eso es a SDR y luego el valor. Entonces si fuera a poner x o digamos que el valor actual es igual a 40 es 0.02 maduro es un flotador. Y luego escribimos donde obtienes el tipo de valor. Entonces esto va a ser flotador. ¿ Verdad? Ahora bien, si lo hubieras echado a una cuerda, puedes ver que los cultivos van a estar envueltos a su alrededor. No tenemos que hacer esto, sólo tenemos que escribir esto. Y reasignémoslo a su valor actual es igual a la representación de cadena. Y luego si fuera a escribirlo, así podemos ver esto es una cuerda ahora. Así que los soportes STR, al igual que hicimos con el flotador, un poco más arriba. Entonces cada invitado, lo que sea que esté dentro de aquí, a un valor de punto flotante, vamos a hacer lo mismo con una cadena. Entonces aquí sólo lo vamos a lanzar a una cuerda. Y si hiciéramos esto, realidad llegaríamos allí. Ellos lo son. Ahora la alineación sigue un poco apagada, por lo que se puede ver que en realidad se alinea a la izquierda. Tendrás que alinearlo a la derecha. Entonces solo podemos conseguir, conseguir el, el tamaño de esto. Entonces esto ahora son tres personajes y esto son cuatro personajes. Por lo que el offset va a ser un poco diferente. Entonces, en realidad agreguemos una variable aquí y es un valor como cadena o almacenamiento SSD allí. Porque una cosa adicional que podemos hacer ahora, si volvemos aquí, inicio valor actual es aquí de tipo string. Y ahora en realidad podemos consultar para alargar. Por lo que la longitud será de cuatro. Por lo que eso significa que había cuatro personajes en el actual y en el distrito. Por lo que un 1234, incluso puede obtener el índice de u1. Por lo que el valor actual 0, esto tiene un reporte. El primer índice va a ser 0.23 y nos vemos el próximo año. Esto tiene cuatro caracteres para consultarlo. No va a funcionar porque el índice no existe, porque solo hay cuatro y empezamos en 0, entonces es 0 o uno a tres. Para que fuera del camino, tenemos un par de personajes y básicamente queremos compensarlo en consecuencia. Entonces aquí cada conjunto son offset grueso, queremos agregar o queremos agregarle, pero no siempre queremos agregar la misma cantidad. Entonces lo que queremos hacer aquí es que queremos agregar la longitud de nuestro valor actual tiempos una cierta letra con variable. Entonces asignemos este ancho de una letra. Y voy a estimar que esto es uno. Y veamos qué obtenemos. Ahora. No lo que quieras. Entonces esta es la única razón. Entonces creo que esto es un poco demasiado. Y esto podría tener que ser negativo porque vas en la dirección opuesta. Entonces veamos lo que tenemos ahora. Sí, esto definitivamente no es un solo fuego de tira aún su ego. Entonces porque solo usamos un tamaño predeterminado de este texto, podemos simplemente, va a ser uno, así que podemos tomar la mitad y va a ser el tamaño de letra única. Entonces esto se ve bien. Y vamos a tal vez entonces. Entonces esto es ahora una línea a la derecha. Y eso es tal vez sólo para marcar lo contrario. Ser. L sigue siendo, May me imaginé que van a ser relativos a la mascota. Entonces básicamente lo que queremos hacer es ir sentados divididos por dos, separados, un poco menos lejos. No es ese Bertier eso. Entonces sí, solo hay baja a la preferencia personal. De nuevo, yo sólo tipo de averiguar dónde poner esto. A lo mejor quiero hacer un poco más parejo. Entonces eso es un desplazamiento adicional. Entonces este es un número. Hagamos esto 0.1. Y luego esto, esto aquí. Echémosle un vistazo, un poco más grande para asegurarnos de que así es como quieres que sea. Y se puede jugar con esta posición. Por supuesto, esto es sólo preferencia personal. Solo te estoy mostrando cómo puedes conseguirlo está vivo y cómo puedes conseguir los valores y dónde los pones exactamente. Realmente no importa que mucho pueda incluso hacerlo un poco más pequeño. Si digamos que estabas como empacada, podría haber un poco de cerdo. Y ahora veamos realmente si se adaptan adecuadamente. Entonces vamos a traer de vuelta nuestros datos rápidamente yendo a navegar a él. De acuerdo, entonces tutorial TXT. Baja esto a nueve de nuevo. A ver. Ahora tenemos algo como esto. También lo harás, porque ahora podría ser un poco estúpido tener 0 en todas partes echado a un entero, pero luego pierdes algo de precisión, claro. Entonces esto es un, algunas cosas que hay que tomar en cuenta. Pongamos 39 rápidamente para ver cómo se comporta esto. Siempre vamos uno sobre la configuración actual. Así que asegúrate de que te guste esto. Normalmente lo hago. No importa tanto. Lo principal es que funciona. Esto, eso no debería pasar. Pero ahora sí tenemos algunos problemas de redondeo mientras se redondea por defecto, así que por licuadora, pero nuestros números son demasiado largos ahora no queremos mostrar esto, podría apreciarlo. Entonces, en realidad tomemos esto en cuenta también. Por lo que las alineaciones siguen funcionando. Entonces eso es bastante guay. Por lo que todavía se va a alinear a la derecha. Entonces R, S las obras. Pero vamos a redondear esto. Entonces nuestro valor como cadena va a estar ocurriendo valor pero redondeado. Entonces tomemos dos valores después de la coma al punto bueno que le rodea. Está bien. Quizás rápidamente para ilustrar tijera, función redonda y licuadora. Por lo que puedes simplemente redondear cualquier flotador hasta cualquier cantidad de precisión. Entonces si tuviera un número que es 0.0.0 es cinco, y eso dividiría un número. Bueno, tal vez sea un mal número. El número es igual a 15, algo. Número. Podría redondear este número hasta que un valor detrás de la coma conseguiría esto. En realidad sería lo suficientemente inteligente como para redondear esto porque el siguiente valor es un nueve. Si fuera a ser 16.128, muéstrale. Serían seis sencillos fue a uno, serán 11, por lo que codon. Entonces eso es un poco más sobre la función de redondeo. No son ya dos importantes. Funciona de la forma en que esperas que funcione. Entonces eso siempre es agradable. Y así podemos agregar más significado a nuestros datos, a nuestra gráfica. 22. Crear y al azotar materiales al momento de aleatorización de Randomizing: De acuerdo, así que hemos estado hablando mucho de objetos y de mallas y todo eso. el terminado, por supuesto otra vez, quiero cubrir un poco más de terreno y quiero hablar también de materiales. Entonces la forma en que usamos los materiales es bastante, bastante similar a la forma en que usamos los objetos. Entonces tal vez lo voy a ilustrar con un rápido. Simplemente puedes crear un nuevo material y ver cómo se ve eso. Cbp, ¿por qué no upstart material dot nu. Entonces material advenedizo que sabía, vale, es un poco diferente. Pero si tuviéramos que guiar esto, en realidad funcionaría de la misma manera. Entonces, vamos a crear un material al final ahora. Y veremos que tienen 10, en realidad tienen un par de materiales. Ya van corriendo esto un par de veces. Entonces ves que cada vez que ejecutas esto, se crea un nuevo material. Pero los viejos Walden también van a estar ahí. Entonces tal vez vamos a deshacernos rápidamente de esos. Lo vamos a hacer de la misma manera que nos deshacemos de nuestros objetos. Entonces tal vez voy a hacer una pausa para un poquito, poquito. Es decir, debes pausar el video, averiguar cómo puedes realmente eliminar todos estos materiales. Es muy similar a lo que hemos hecho antes, y es muy similar a lo que está en la pantalla ahora. Entonces lo voy a hacer. Pausa si otra vez, tres a uno, vámonos. Por lo que queremos repasar todos nuestros materiales, agarrar el material actual. Entonces para cada material de nuestros materiales, igual que hacemos para cada objeto y otros objetos. Bpi dot data dot materiales porque estamos revisando materiales ahora, quitar material de garantía. Eso si yo fuera a correr esto ahora, sólo habrá un material, que es éste de aquí. No estoy seguro si puedo pasarle un nombre aquí. Bueno, en realidad, como nota lateral rápida, generalmente es mala práctica usar BPI dot ops. ¿ Es sólo algo que vamos a decir y no explicar demasiado? Porque hay todo un razonamiento detrás de esto. Principalmente contexto y bolas y, y hay cosas de licuadoras, licuadora, cosas de API en las que no me voy a meter. Se. Es un poco demasiado complejo para el alcance actual de este curso. Principalmente solo es bueno recordar que BPO i dot es algo que solo debes usar cuando sea absolutamente necesario. Entonces cuando se quiere crear geometría se utiliza a forma de hacerlo. Pero cuando se crea el material, es esencialmente si se utilizan datos de puntos BPI, materiales de punto. Y aquí sólo puedo llamar a esto como sea que sus artistas usen nombre por ahora. Y hacer de esta manera es en realidad un poco más, un poco menos propenso a errores. Entonces en realidad podemos ver aquí esto varía. O dices restringido, lo de la UI.R. Es que los operadores están bastante bloqueados a su entorno, por lo que es mejor no pensar en eso esos y solo usar cosas de datos de puntos PPI o cualquier otra llamada esencialmente. Y ahora incluso podemos asignar esto a una variable y podemos imprimirlo solo para comprobar cómo se ve eso. Para que veas que tenemos un material. Se llama nombre. Puedo llamar a esto como material. De acuerdo, entonces ahora esencialmente sabemos crear un solo material. Entonces hagámoslo por cada cubo. Entonces podemos hacer esto presionando Tab y el inicio de la línea, que es, whoops, que es que quieres empujar nuestra, nuestra línea en nuestro bucle for. Entonces de nuevo, todo lo que está en este nivel de sangría va a ser bucle sobre x cantidad de veces. Por lo que ahora esta línea se va a ejecutar a 100 veces. Entonces si ejecuto esto y veo que tenemos un 100 materiales, el nombre es estático, pero solo agrega este punto 048 o punto, punto lo que sea punto, número de punto. Detrás de esto. Hay otro realmente importado, el nombre justo en URI o donde sea que eso. Entonces ahora esencialmente hemos creado un material a medida que creamos el cubo. Entonces lo único que nos dura asignamos nuestro cubo 3D material. Entonces podemos hacer esto haciendo BPI dot context object, que es actualmente son objetos activos con los que es nuestro R cubed que acabas de agregar, podemos acceder a los materiales de datos de este objeto, y luego simplemente podemos anexar nuestro material actual a ella. Por lo que podemos ver ahora esencialmente BPI punto contexto de objetos dot data dot materiales, que es un, bastante bocado, se está refiriendo a esto aquí a nuestros materiales. Y al hacer clic en este botón, estamos anexando a él. Entonces en realidad es crear uno nuevo y luego asignarlo directamente ya con esta forma, creándolo y luego lo estamos anexando al objeto actual. Por lo que el objeto actualmente activo, el activo, el objeto y acaba de ser creado por esta función. Entonces si hicieras esto, veríamos que cada cubo ahora como material, C cubo 017, eso es material 017, y así sucesivamente. Entonces eso ya se ve genial, pero todos los materiales siguen siendo los mismos. Por lo que poder ir al editor shader. Aquí se muestra el equilibrio, ni siquiera el uso de notas. Pero sí, todos se ven exactamente igual. Y ni siquiera necesitamos usar nodos para que no sea lo mismo. Entonces una cosa que podríamos hacer es un material que el color difuso sea igual. Hagámoslo rojo por ahora. Basta a ver si esto funciona o no. Reducción de la necesidad de. Entonces este sería nuestro G ser a. Así que si nos preocupamos también, voy a correr esto. Entonces básicamente lo que estamos estableciendo como nuestro color base. Entonces como se puede ver en el, en la punta de la herramienta dice color difuso de puntos. Y aquí se puede ver f, r, g, b, a. Así 1001. No queremos que todos sean leídos. Por supuesto que queremos que todos sean aleatorios. Por lo que podemos usar nuestra función aleatoria como tenemos aquí para obtener un número aleatorio entre 01. Y esto. Nosotros lo queremos hacer por cada canal. Entonces queríamos esto para rojo, verde y azul. Te seguiré siempre va a tener uno. Siempre va a ser totalmente transparente u opaco como la palabra transparente al otro tipo. Entonces al hacer esto, básicamente estamos generando un color aleatorio. Entonces los ejecuté color para cada cubo, o asignando ese color a través del nuevo material que hemos creado para cada q. Y entonces estamos asignando el material con un color aleatorio a él, un cubo. 23. Randomization de colores controlada: De acuerdo, entonces tenemos nuestros colores aleatorios asignados a nuestros cubos aleatorios. Si fuera a correr esto un par de veces más, verías que todos estos cubos ahora tienen colores individuales. Por lo que algunos se parecen, pero todos son únicos. Es decir, podría haber un duplicado que hay como mil cubos. Asumamos que por cada cubo realmente estamos aleatorizando. Por lo que por cada Q obtendrá un material único. Pero digamos que queríamos tomar un poco más de control y queremos no sólo tener un 100 colores aleatorios, sino que digamos que queremos tener como diez colores aleatorios. Entonces lo que podríamos hacer es cantidad de colores iguales a diez. Y entonces igual que recrear nuestros cubos Android, puedes crear un 100 materiales. Por lo que para i en gama de colores de una montaña, podemos hacer nuestra creación de material o aleatorización. Y luego esta asignación, eso en realidad no va a funcionar. Este punto porque aún no tenemos nuestras colas. Pero por ahora solo copiemos esto aquí. Entonces lo haremos es crear X cantidad de materiales y luego aleatorizaremos sus colores. Entonces ahora se desgasta. Deshazte de esto. Entonces ya no vamos a crear un material para cada cubo. Todavía había que asignar material al cubo actual. Por lo que esto es esto todavía se puede quedar. Pero hace referencias materiales y nuestra rota porque aquí no hay acceso a estos materiales. Entonces tal vez hagamos un seguimiento de nuestros materiales creando una lista vacía en la parte superior. Y luego en realidad anexando nuestro material a través de esta lista. Entonces lo que hemos hecho aquí es que hemos creado nuestro material. Pero esta línea, hemos aleatorizado y después la hemos agregado a esta colección de materiales. Aquí es donde se reinicializa esta colección. Por lo que sólo obtenemos una colección vacía y lista vacía de materiales. Y luego a medida que pasamos por nuestra lista, conforme creamos estos materiales están llenando nuestra colección. Entonces al final de ello, si fuera a imprimir nuestros materiales y sólo voy a ejecutar esto. Yo solo voy a tiza consola desarrolladora térmica y sigue desapareciendo. Ya veremos ahora tenemos una colección de material. Los objetos son BPO, materiales de punto de cola para adultos, material dopado. Y esto en realidad es un objeto material y se puede ver que se trata de una colección de objetos materiales. Entonces esto es lo que queremos, ¿verdad? Se tiene una referencia del material que se guarda en la memoria porque a esto también se le llama el material. Pero yo sí, así que es por eso que en realidad sí vemos un color y esto no se estrella. Si fuera a llamar a esto otra cosa, se romperá. Pero dejémoslo por ahora. Por lo que básicamente solo queremos sacar cualquier, cualquier material de nuestra colección. Entonces lo que pudiéramos hacer, rápidamente agarraría de nuevo nuestra consola a medida que utilizas la función aleatoria. Tan uniforme de punto al azar, bueno en realidad estamos conectados, quiero usar uniforme de punto aleatorio. Vamos a usar otra cosa. Porque como vimos, tres dobles de punto aleatorio uniforme entre 010 porque tenemos, tenemos diez colores. Entonces en realidad lo que haríamos con un mes de colores es igual a diez, solo un poco asegúrate de que tengamos el mismo, mismo look que iríamos de aquí a cantidad de colores. Pero como ven aquí, seguimos consiguiendo estos, estos números de punto flotante. La mantequilla uniforme de punto aleatorio es un punto flotante número tres, estamos haciendo uniforme de punto aleatorio. Verías métodos de instancia aleatoria, aleatoria obtener un número aleatorio en el rango de a o B dependiendo del redondeo. Bueno, no es decir explícitamente que sean flotadores, pero podríamos decir, ¿verdad? Para que podamos, podemos depurar o buenos programadores. Entonces vamos a ver realmente qué aleatorizar ofrecer. Además uniforme de punto aleatorio hace un montón más funciones aquí. No una cosa que podrías hacer es solo Google. Se puso como un entero aleatorio entre una cúpula, par de límites, pero hagámoslo. Blender forma por ahora, solo hardcore. Ya puedo ver renta int probablemente va a ser una buena. Rango aleatorio. Pongamos la ayuda en. Yo quería esos puntos al azar. Gama. Elige un elemento aleatorio de organizar, iniciar, parar. Esto arregla al programador para rentar, que incluye el endpoint. Entonces en Python, esto normalmente no es lo que queremos y en realidad está aquí. También es un sobre uno. Por lo que no queremos incluir los puntos finales. Entonces si tuviera un rango de punto-punto aleatorio entre 0 y la cantidad de colores, obtendríamos un entero. Y ahora esto en realidad nunca debería estar regresando. Entonces, porque aquí vemos nueve, éste en realidad debería ser el valor más alto que esto devuelve. Entonces hagámoslo un par de veces y asegurémonos de que nunca obtenemos nada por encima de la noche. Al igual que nunca conseguimos diez. No deberíamos porque leemos la ayuda, pero siempre es bueno comprobar y estar seguros. Porque como sabemos, una lista, igual que este material de aquí, utiliza la indexación y la indexación comienza en 0. Por lo que cuando tengamos diez ítems en la lista, el último ítem será accedido por el noveno índice. Entonces si eso no tiene sentido, tenemos índice 0, índice 123456789. Si miramos aquí, en realidad tenemos diez artículos. Por lo que tenemos 12345678910 artículos. Pero es algo que realmente hay que tener en cuenta al trabajar con listas es que siempre hay que empezar desde 0. Eso es sólo algo que tienes que recordar de verdad, de verdad. Por lo que esto funciona renderizados aleatorios. Por lo que escribiste dos cantidad de colores. Entonces ahora en lugar de solo tomar el último material que tenemos aquí, solo podemos ir a consultar cierto índice de nuestra colección de materiales. Por lo que conseguiremos una bodega de nuestra colección de materiales y luego básicamente solo consultaremos un índice aleatorio. Por lo que este será un índice aleatorio el cual se utilizará para buscar un valor en la lista de materiales. Y esto sólo devolverá un material aleatorio. Entonces si fuéramos a ejecutar esto, obtendrás entonces materiales aleatorios que deberían ser distribuidos de manera bastante igualitaria. A lo mejor hagamos como a los materiales para que sea un poco más obvio. Y puedo ver que sólo tenemos que contar así. Puedes tomar aún más control sobre nuestra, nuestra aleatorización. Por lo que no es solo completamente aleatorio.