none
Como coloreo un cubo con varios colores?

    Question

  • Hola, necesito hacer un cubo que tenga en cada cara un color diferente, pero he buscado y para colorear un cubo usan <GeometryModel3D.Material> y <DiffuseMaterial>, pero el cubo toma el color completo, y no se como hacer para que cada cara me de un color diferente... alguien puede ayudarme?!

     

    Monday, July 25, 2011 6:03 PM

Answers

  • Hola Sergio

    Usando un código que encontré pude hacer lo que necesitas, mira como está la definición de este código:

    <Viewport3D Margin="0" Name="viewCube">
              <ModelVisual3D>
                <ModelVisual3D.Content>
                  <Model3DGroup>
                    <!-- Lights -->
                    <AmbientLight Color="Gray" />
                    <DirectionalLight Color="Gray" Direction="1,-2,-3" />
                    <DirectionalLight Color="Gray" Direction="-1,2,3" />
    
                    <!-- Top -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,1,1 1,1,1 1,1,-1 -1,1,-1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Red"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Front -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,-1,1 1,-1,1 1,1,1 -1,1,1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Black"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Right -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "1,-1,1 1,-1,-1 1,1,-1 1,1,1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Blue"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Left -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,-1,-1 -1,-1,1 -1,1,1 -1,1,-1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Gray"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Back -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "1,-1,-1 -1,-1,-1 -1,1,-1 1,1,-1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Green"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Bottom -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,-1,-1 1,-1,-1 1,-1,1 -1,-1,1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Yellow"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                  </Model3DGroup>
                </ModelVisual3D.Content>
              </ModelVisual3D>
    
              <Viewport3D.Camera>
                <PerspectiveCamera
                 Position = "3, 3, 3"
                 LookDirection = "-1, -1, -1"
                 UpDirection = "0, 1, 0"
                 FieldOfView = "60">
                  <PerspectiveCamera.Transform>
                    <Transform3DGroup>
                      <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                          <AxisAngleRotation3D
    	                     Axis="0 1 0" 
    	                     Angle="{Binding ElementName=hscroll, Path=Value}" />
                        </RotateTransform3D.Rotation>
                      </RotateTransform3D>
                      <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                          <AxisAngleRotation3D
    	                     Axis="1 0 0" 
    	                     Angle="{Binding ElementName=vscroll, Path=Value}" />
                        </RotateTransform3D.Rotation>
                      </RotateTransform3D>
                    </Transform3DGroup>
                  </PerspectiveCamera.Transform>
                </PerspectiveCamera>
              </Viewport3D.Camera>
            </Viewport3D>
    

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marked as answer by SergioGiAr Tuesday, July 26, 2011 12:03 AM
    Monday, July 25, 2011 10:38 PM

All replies

  • Hola Sergio

    Usando un código que encontré pude hacer lo que necesitas, mira como está la definición de este código:

    <Viewport3D Margin="0" Name="viewCube">
              <ModelVisual3D>
                <ModelVisual3D.Content>
                  <Model3DGroup>
                    <!-- Lights -->
                    <AmbientLight Color="Gray" />
                    <DirectionalLight Color="Gray" Direction="1,-2,-3" />
                    <DirectionalLight Color="Gray" Direction="-1,2,3" />
    
                    <!-- Top -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,1,1 1,1,1 1,1,-1 -1,1,-1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Red"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Front -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,-1,1 1,-1,1 1,1,1 -1,1,1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Black"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Right -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "1,-1,1 1,-1,-1 1,1,-1 1,1,1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Blue"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Left -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,-1,-1 -1,-1,1 -1,1,1 -1,1,-1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Gray"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Back -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "1,-1,-1 -1,-1,-1 -1,1,-1 1,1,-1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Green"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                    <!-- Bottom -->
                    <GeometryModel3D>
                      <GeometryModel3D.Geometry>
                        <MeshGeometry3D
                          Positions = "-1,-1,-1 1,-1,-1 1,-1,1 -1,-1,1"
    	                    TriangleIndices = "0 1 2   2,3,0"
                          TextureCoordinates="0,1 1,1 1,0 0,0"
                        />
                      </GeometryModel3D.Geometry>
                      <GeometryModel3D.Material>
                        <DiffuseMaterial Brush="Yellow"/>
                      </GeometryModel3D.Material>
                    </GeometryModel3D>
    
                  </Model3DGroup>
                </ModelVisual3D.Content>
              </ModelVisual3D>
    
              <Viewport3D.Camera>
                <PerspectiveCamera
                 Position = "3, 3, 3"
                 LookDirection = "-1, -1, -1"
                 UpDirection = "0, 1, 0"
                 FieldOfView = "60">
                  <PerspectiveCamera.Transform>
                    <Transform3DGroup>
                      <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                          <AxisAngleRotation3D
    	                     Axis="0 1 0" 
    	                     Angle="{Binding ElementName=hscroll, Path=Value}" />
                        </RotateTransform3D.Rotation>
                      </RotateTransform3D>
                      <RotateTransform3D>
                        <RotateTransform3D.Rotation>
                          <AxisAngleRotation3D
    	                     Axis="1 0 0" 
    	                     Angle="{Binding ElementName=vscroll, Path=Value}" />
                        </RotateTransform3D.Rotation>
                      </RotateTransform3D>
                    </Transform3DGroup>
                  </PerspectiveCamera.Transform>
                </PerspectiveCamera>
              </Viewport3D.Camera>
            </Viewport3D>
    

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    • Marked as answer by SergioGiAr Tuesday, July 26, 2011 12:03 AM
    Monday, July 25, 2011 10:38 PM
  • Esta es la respuesta!!!... antes de marcarla, ¿existe alguna forma de hacer estos modelos en 3d y luego traerlos a xaml???...
    Monday, July 25, 2011 11:53 PM
  • Hola Sergio

    Claro que si! Existe una aplicación llamada ZAM3D (es de pago). Y te dejo este video (en ingles) de cómo lo usan. Además estuve leyendo que han creado un script para exportar las gráficas 3D hechas en Blender (no me abrió la página) a xaml.

    Espero te ayude.

    Saludos


    Antonio Lobo
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi blog
    Tuesday, July 26, 2011 2:52 AM